2016-04-22 81 views
0

我正在尋找一個python函數將一個音頻文件(wav格式)拼接成1秒的時間段,並將每個新拼接(持續時間爲1秒)拼接到一個新的.wav文件中。其中如何將音頻文件(wav格式)拼接成python中的1秒拼接?

+0

我將開始與'numpy.io.wavfile' –

+0

它不存在numpy的,你可能指的是['scipy.io.wavfile'] (http://docs.scipy.org/doc/scipy/reference/io.html)。 –

+0

如果你願意使用外部庫,請看下面的答案,乾淨而簡單。 –

回答

5

其真正的簡單和容易使用pydub模塊,細節上herehere

pydub有一個名爲make_chunks來,你可以在milliseconds指定chunk length方法。

make_chunks(your_audio_file_object, chunk_length_ms)

這裏是分割wav文件在1秒塊一個工作碼。我有一個8.5秒的文件,所以程序創建了9個1秒的塊,它們是playable。取決於音頻持續時間,最後一個塊將會變小。

from pydub import AudioSegment 
from pydub.utils import make_chunks 

myaudio = AudioSegment.from_file("myAudio.wav" , "wav") 
chunk_length_ms = 1000 # pydub calculates in millisec 
chunks = make_chunks(myaudio, chunk_length_ms) #Make chunks of one sec 

#Export all of the individual chunks as wav files 

for i, chunk in enumerate(chunks): 
    chunk_name = "chunk{0}.wav".format(i) 
    print "exporting", chunk_name 
    chunk.export(chunk_name, format="wav") 

輸出

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> 
exporting chunk0.wav 
exporting chunk1.wav 
exporting chunk2.wav 
exporting chunk3.wav 
exporting chunk4.wav 
exporting chunk5.wav 
exporting chunk6.wav 
exporting chunk7.wav 
exporting chunk8.wav 
>>> 
+0

取而代之的是使用python,sox是播放音頻文件的好工具:http://stackoverflow.com/questions/16125614/trying-to-split-wav-file-into-two-pieces-with-sox –