使用 PyDub 将立体声音频拆分为单声道
如果您要转录电话通话录音,它们很可能是以立体声格式录制的,每个声道对应一位说话者。
如您所见,同时包含多位说话者的音频很难转录。一个解决方案是将包含多位说话者的音频拆分为仅含单个说话者的独立文件。
PyDub 的 split_to_mono() 函数可以帮助完成此操作。对一个立体声的 AudioSegment 调用该函数,会返回一个包含两个独立单声道 AudioSegment 的列表,每个声道对应一个元素。
在本练习中,您将把这段【立体声电话通话】(https://assets.datacamp.com/production/repositories/4637/datasets/810bb65e2e681e086e90bc2c6c2372bc4bd2cb52/ex3stereocall.wav)(stereo_phone_call.wav)拆分为【声道 1】(https://assets.datacamp.com/production/repositories/4637/datasets/0aa876f5cb924035481d7b786a3701624e86d1e7/ex3stereocallchannel1.wav) 和【声道 2】(https://assets.datacamp.com/production/repositories/4637/datasets/2a16db969efc35186fe25ca45a4dbd506318a1cd/ex3stereocallchannel2.wav)。这样可以把两位说话者分离,便于后续转录。
本练习是课程的一部分
Python 语音语言处理
练习说明
- 从
pydub导入AudioSegment。 - 使用
stereo_phone_call.wav创建一个AudioSegment实例stereo_phone_call。 - 使用
split_to_mono()将stereo_phone_call拆分为channels,并检查输出结果的声道数。 - 将每个声道分别保存到新变量
phone_call_channel_1和phone_call_channel_2。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import AudioSegment
from ____ import ____
# Import stereo audio file and check channels
stereo_phone_call = AudioSegment.from_file(____)
print(f"Stereo number channels: {stereo_phone_call.channels}")
# Split stereo phone call and check channels
channels = stereo_phone_call.____
print(f"Split number channels: {channels[0].____}, {channels[1].____}")
# Save new channels separately
phone_call_channel_1 = channels[0]
phone_call_channel_2 = ____