使用Python音頻雙通道分離


某些音頻是雙方對話,有可能需要對音頻作通道的分離。

示例代碼如下:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 """
 4 音頻雙通道分離
 5 """
 6 import sys
 7 import numpy as np
 8 from scipy.io import wavfile
 9 from converter import mp3_to_wav
10 
11 
12 def split_channel(wav_path, left_wav_path, right_wav_path):
13     """
14     通道分離
15     :param wav_path: wav音頻的路徑
16     :param left_wav_path: 左聲道的wav音頻路徑
17     :param right_wav_path: 右聲道的wav音頻路徑
18     :return None:
19     """
20     try:
21         sample_rate, wav_data = wavfile.read(wav_path)
22         left = []
23         right = []
24         for item in wav_data:
25             left.append(item[0])
26             right.append(item[1])
27         wavfile.write(left_wav_path, sample_rate, np.array(left))
28         wavfile.write(right_wav_path, sample_rate, np.array(right))
29     except IOError as e:
30         print('error is %s' % str(e))
31     except:
32         print('other error', sys.exc_info())
33 
34 
35 if __name__ == '__main__':
36     mp3_to_wav('input/test.mp3', 'tmp/tmp.wav')
37     split_channel('tmp/tmp.wav', 'output/left.wav', 'output/right.wav')

其中調用了一個自定義的庫,converter.py 加入了代碼:

 1 from pydub import AudioSegment
 2 
 3 
 4 def mp3_to_wav(source, destin):
 5     """
 6     mp3 轉 wav
 7     :param source:
 8     :param destin:
 9     :return None:
10     """
11     data = AudioSegment.from_mp3(source)
12     data.export(destin, format='wav')

本代碼示例可以生成兩個通道分離后的 wav 文件。

注意:如果源文件的格式是 wav 文件,可以省掉轉換格式的過程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM