Tách âm thanh stereo thành mono với PyDub
Nếu bạn đang cố gắng chuyển lời thoại của các cuộc gọi điện thoại, rất có thể chúng được ghi ở định dạng stereo, với mỗi kênh là một người nói.
Như bạn đã thấy, việc chuyển lời một tệp âm thanh có nhiều hơn một người nói là khá khó. Một cách giải quyết là tách tệp âm thanh có nhiều người nói thành các tệp đơn, mỗi tệp chỉ có một người.
Hàm split_to_mono() của PyDub có thể giúp việc này. Khi gọi trên một AudioSegment được ghi ở stereo, hàm sẽ trả về một danh sách gồm hai AudioSegment riêng biệt ở định dạng mono, tương ứng với mỗi kênh.
Trong bài tập này, bạn sẽ thực hành bằng cách tách bản ghi cuộc gọi stereo (stereo_phone_call.wav) thành kênh 1 và kênh 2. Việc này sẽ tách hai người nói, giúp quá trình chuyển lời dễ dàng hơn.
Bài tập này là một phần của khóa học
Xử lý Ngôn ngữ Nói bằng Python
Hướng dẫn bài tập
- Import
AudioSegmenttừpydub. - Tạo một đối tượng
AudioSegmenttênstereo_phone_callvớistereo_phone_call.wav. - Tách
stereo_phone_callthànhchannelsbằngsplit_to_mono()và kiểm tra các kênh trong kết quả đầu ra. - Lưu mỗi kênh vào biến mới,
phone_call_channel_1vàphone_call_channel_2.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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 = ____