# 打印音频片段的声道数
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;声音越小,就越接近中点标示的负无穷。

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
)