pydub、ffmpeg 音频文件声道选择转换、采样率更改

news2025/1/12 12:29:29

快速查看音频通道数和每个通道能力判断具体哪个通道说话;一般能量大的那个算是说话

import wave
from pydub import AudioSegment
import numpy as np

def read_wav_file(file_path):
    with wave.open(file_path, 'rb') as wav_file:
        params = wav_file.getparams()
        num_channels = params.nchannels
        sample_width = params.sampwidth
        frame_rate = params.framerate
        num_frames = params.nframes
        print(f"Number of channels: {num_channels}")
        print(f"Sample width: {sample_width}")
        print(f"Frame rate: {frame_rate}")
        print(f"Number of frames: {num_frames}")
        
        frames = wav_file.readframes(num_frames)
        audio_data = np.frombuffer(frames, dtype=np.int16)
        if num_channels > 1:
            audio_data = audio_data.reshape(-1, num_channels)
        return audio_data, frame_rate, num_channels

def analyze_channels(audio_data, frame_rate, num_channels):
    for channel in range(num_channels):
        channel_data = audio_data[:, channel] if num_channels > 1 else audio_data
        # 计算通道的能量
        energy = np.sum(np.abs(channel_data))
        print(f"Channel {channel} energy: {energy}")
        # 你可以在这里添加更多的分析逻辑,比如使用语音活动检测(VAD)来判断说话声

if __name__ == "__main__":
    file_path = r"E:\allchat\output.wav"
    audio_data, frame_rate, num_channels = read_wav_file(file_path)
    analyze_channels(audio_data, frame_rate, num_channels)

这里 channel0 的声音算说话的
在这里插入图片描述

1、转换mono单声道,选择人声的那个通道

mp3格式

from pydub import AudioSegment

def extract_and_save_channel(input_file, output_file, channel_index):
    # 读取 MP3 文件
    audio = AudioSegment.from_mp3(input_file)
    
    # 提取特定通道
    if audio.channels > 1:
        channel_data = audio.split_to_mono()[channel_index]
    else:
        channel_data = audio
    
    # 保存提取的通道为新的 MP3 文件
    channel_data.export(output_file, format="mp3")

if __name__ == "__main__":
    input_file = "your_audio_file.mp3"
    output_file = "channel_0.mp3"
    channel_index = 0  # 选择 Channel 0
    
    extract_and_save_channel(input_file, output_file, channel_index)



wav格式

from pydub import AudioSegment

# 加载WAV文件
wav_file_path = r"E:\allchat\output_16000.wav"
audio_segment = AudioSegment.from_wav(wav_file_path)

# 提取Channel 0
if audio_segment.channels > 1:
    channel_0 = audio_segment.split_to_mono()[0]
else:
    channel_0 = audio_segment

# 导出为单声道WAV文件
mono_wav_file_path = r"E:\allchat\output_16000_channel_0.wav"
channel_0.export(mono_wav_file_path, format="wav")

在这里插入图片描述

2、采样率更改为16000

from pydub import AudioSegment

def resample_wav_with_pydub(input_file, output_file, new_rate):
    # 读取原始WAV文件
    audio = AudioSegment.from_wav(input_file)
    
    # 设置新的采样率
    audio = audio.set_frame_rate(new_rate)
    
    # 导出重采样后的WAV文件
    audio.export(output_file, format='wav')

# 使用示例
resample_wav_with_pydub('input.wav', 'output_16000.wav', 16000)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1888878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红酒与舞蹈:舞动的味觉艺术

在艺术的海洋中,红酒与舞蹈总是能激起人们心中较温柔的涟漪。红酒以其深邃的色泽、馥郁的香气,诠释着味觉的艺术;而舞蹈,则以优雅的姿态、灵动的步伐,演绎着视觉的盛宴。当红酒遇上舞蹈,一场别开生面的艺术…

Ubuntu防火墙相关内容

Ubuntu防火墙相关的命令,主要用于日常使用过程中,忘记命令时查找方便,不用再去各种地方搜索了。以下命令均已root用户执行,如果是非root用户,需要添加sudo 查看防火墙的启用状态 ufw status 说明是启用状态。 启用防…

边缘和条件高斯相乘后的高斯分布形式【模式识别书】

边缘和条件高斯相乘后的高斯分布形式【模式识别书】 结论来自:《Pattern Recognition and Machine Learning》公式(2.115)

前端 原型 原型链的理解

概念 原型 对象中固有的 __proto__ 属性,该属性指向对象的 prototype 原型属性。 原型链 当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么它就会去它的原型对象 里找这个属性,这个原型对象又会有自己的原…

自然语言处理与Transformer模型:革新语言理解的新时代

引言 自然语言处理(NLP)是人工智能和计算机科学的一个重要分支,旨在使计算机能够理解、生成和处理人类语言。随着互联网和数字化信息的爆炸性增长,NLP在许多领域中的应用变得越来越重要,包括: 搜索引擎&am…

.NET 漏洞情报 | 某云平台存在SQL注入漏洞

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

Django学习第二天

启动项目命令 python manage.py runserver 动态获取当前时间 javascript实现数据动态更新代码 <script>setInterval(function() {var currentTimeElement document.getElementById(current-time);var currentTime new Date();currentTimeElement.textContent Curren…

ESP32CAM物联网教学02

ESP32CAM物联网教学02 物联网门锁 小智来到姑姑家门口&#xff0c;按了门铃&#xff1b;还在公司上班的姑姑用电脑给小智开了门&#xff0c;让他先进屋休息。小智对物联网门锁产生了兴趣&#xff1a;什么是物联网&#xff1f;为什么这么厉害&#xff1f; 初识物联网 我们在百…

Mac/Linux安装JMeter压测工具

Mac安装JMeter压测工具 介绍 Apache JMeter™应用程序是开源软件&#xff0c;是一个100%纯的Java应用程序&#xff0c;旨在加载测试功能行为和衡量性能。它最初是为测试Web应用程序而设计的&#xff0c;但后来扩展到其他测试功能。 我能用它做什么&#xff1f; Apache JMet…

SwanLinkOS首批实现与HarmonyOS NEXT互联互通,软通动力子公司鸿湖万联助力鸿蒙生态统一互联

在刚刚落下帷幕的华为开发者大会2024上&#xff0c;伴随全场景智能操作系统HarmonyOS Next的盛大发布&#xff0c;作为基于OpenHarmony的同根同源系统生态&#xff0c;软通动力子公司鸿湖万联全域智能操作系统SwanLinkOS首批实现与HarmonyOS NEXT互联互通&#xff0c;率先攻克基…

二叉树的最近公共祖先-二叉树

236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; ​ 递归 lson、rson左右子树&#xff1b; 深度优先遍历&#xff0c;遍历到p或者q就返回ture&#xff1b; class Solution { public:TreeNode* ans;bool dfs(TreeNode* root, TreeNode* p, TreeNode* q){i…

什么游戏加速器好用 网游加速器排行榜

玩游戏经常遇到卡顿和网络延迟等问题&#xff0c;尤其是外服游戏&#xff0c;这时候就需要一个安全稳定快速的加速器&#xff0c;我个人比较推荐“深度加速器。这款款加速器在稳定性和加速效果上都非常不错&#xff0c;而且用户口碑也很好。 在选择加速器时&#xff0c;确实有很…

DGMamba: Domain Generalization via Generalized State Space Model论文笔记

文章目录 DGMamba: Domain Generalization via Generalized State Space Model摘要动机DGMamba设计隐藏状态抑制(HSS)语义感知补丁细化(SPR)免先验扫描域上下文交换上下文patch识别 实验结果 DGMamba: Domain Generalization via Generalized State Space Model paper: https:/…

java到底是值传递还是引用传递

1、一定是值传递&#xff0c;给你的表象也有引用传递是因为对象传递的引用地址&#xff0c;我们在堆里更改了对象的属性值&#xff0c;但是地址没有变更&#xff0c;所以是值传递&#xff0c;可以参考方法的堆栈。 2、本质点看是否new一个新对象&#xff0c;如果new新对象&…

使用 llamaIndex 快速实现智能体

AI 智能体就是可以根据当前环境进行推理&#xff0c;并根据处理结果进行下一步的操作。简单来说 AI 智能体可以与外界环境进行交互&#xff0c;并根据结果执行更复杂的操作。本文将通过llamaIndex 实现一个简单的 Agent 实时获取数据&#xff0c;由于大模型是通过静态数据进行训…

Nginx 1.26.1最新版部署笔记

Nginx是一个高性能的 HTTP 和反向代理服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。 以下是 Nginx 的一些核心功能和特点&#xff1a; 高性能的 Web 服务器&#xff1a; Nginx 被设计为处理高并发连接&#xff0c;具有非常高的性能和稳定性。反向代理&#xff1a; …

买华为智驾,晚了肯定要后悔

文 | AUTO芯球 作者 | 雷慢 晚了就来不及了&#xff01; 你买华为系的车&#xff0c;薅羊毛真的要趁早。 华为ADS2.0高阶智驾正在慢慢恢复原价&#xff0c; 你看啊&#xff0c;就在昨天&#xff0c;华为宣布ADS智驾优惠后价格调到3万元&#xff0c; 只有6000元的优惠了。…

音视频开发35 FFmpeg 编码- 将YUV 和 pcm合成一个mp4文件

一 程序的目的 /*** *该程序的目的是: * 将 一个pcm文件 和 一个 yuv文件&#xff0c;合成为一个 0804_out.mp4文件 * pcm文件和yuv文件是从哪里来的呢&#xff1f;是从 sound_in_sync_test.mp4 文件中&#xff0c;使用ffmpeg命令 抽取出来的。 * 这样做的目的是为了对比前…

Zombie Voices Audio Pack(僵尸游戏音频包)

僵尸声音音频包是600多个高质量声波的集合。 它提供了僵尸主题游戏所需的一切&#xff0c;这要归功于它的20多个类别&#xff1a; 攻击、咬、呼吸、窒息、损坏、死亡、进食、血腥、咕噜、大笑、疼痛、反应、尖叫、喉咙、呕吐、单词和句子。 我们的僵尸动画包带来的额外奖励&am…

HarmonyOS Next系列之Echarts图表组件(折线图、柱状图、饼图等)实现(八)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现&#xff08;一&#xff09; HarmonyOS Next 系列之验证码输入组件实现&#xff08;二&#xff09; HarmonyOS Next 系列之底部标签栏TabBar实现&#xff08;三&#xff09; HarmonyOS Next 系列之HTTP请求封装和Token…