pydub库的AudioSegment类的一些方法

本文介绍了如何使用Python的pydub库来处理音频,包括查看和修改音频的声道数、采样率,以及导出音频。内容涉及音频的基本属性如dBFS,还提供了一个将双声道48000Hz的音频转换为单声道16000Hz的示例,以适应语音识别的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 打印音频片段的声道数
print(audio.channels)
# 打印音频片段的采样率
print(audio.frame_rate)
# 打印音频片段的声音大小
print(audio.dBFS)
# 打印音频片段的时长(秒)
print(audio.duration_seconds)
# 打印音频片段的原二进制数据
print(audio.raw_data)
**下面三条常用:**
# 生成单声道的新音频片段
audio = audio.set_channels(1)
# 生成采样率为 8000Hz 的新音频片段
audio = audio.set_frame_rate(8000)
# 将音频片段导出为新 mp3 文件
audio.export('/Users/wenwen/Desktop/AI/访谈(新).mp3', 'mp3')
set_channels() 方法中,可以填 1 或 2,对应音频的单声道与双声道。现在的流行音乐一般都是双声道,这样可以营造出立体声的效果,但语音识别时使用单声道就可以了。
audio.dBFS 使用小于等于 0 的浮点数表示声音大小,单位是 dBFS。最大为 0 dBFS,表示设备可以播放的最大音量。我们可以结合波形图来看:波形图的纵轴的单位就是 dBFS,简写为 dB。声音越大,就越接近最高点 0 dBFS;声音越小,就越接近中点标示的负无穷。
![在这里插入图片描述](https://img-blog.csdnimg.cn/fdd4c5ae3eac4f8eb305653dbbb0bd7f.png#pic_center)
print(audio.channels)
# 输出:2
print(audio.frame_rate)
# 输出:48000
print(audio.duration_seconds)
# 输出:120.47675

编程练习
从音频信息中可以看出,访谈录音是双声道,采样率为 48000Hz,和百度语音识别要求的声道数和采样率(16000Hz 或 8000Hz)不一样,所以需要后续转换。你可以补全代码,将音频片段转为单声道,采样率转换成 16000Hz 吗?

```python
from pydub import AudioSegment
# 读取已有的音频文件生成音频片段
audio = AudioSegment.from_file('/Users/wenwen/Desktop/AI/访谈.mp3', 'mp3')
# 将采样率转为 16000 Hz
audio = audio.set_frame_rate(16000)
# 转为单声道
audio = audio.set_channels(1)

print(audio.frame_rate)
print(audio.channels)

audio.raw_data 表示音频文件的原二进制数据,也就是上一关中使用 open() 函数和文件的 read() 方法获取的结果。

作为二进制数据,audio.raw_data 可以作为参数直接传入语音识别的 client.asr() 方法中供识别。之前说过,AudioSegment 对象将音频数据以 wav 格式的编码储存,所以 format 参数要写 wav:

client.asr(
  speech=audio.raw_data,
  format='wav',
  rate = 16000
  )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值