2010-11-01 119 views
3

有關如何使用Python庫將時間分隔的片段分割爲.wav文件和文件的建議。將音頻文件切成10秒段

實際的文件類型不是真正的材料,我敢肯定,如果需要,我可以在不同的類型之間進行轉換。

+0

實際文件是什麼類型呢? – You 2010-11-01 01:03:46

+0

@You'mp3'和'wav',儘管我希望能夠接受盡可能多的輸入文件類型。 – 2010-11-01 21:07:01

+0

相關問題:[如何編輯沒有音頻庫的原始PCM音頻數據?](http://stackoverflow.com/questions/841049/) – tzot 2010-11-29 13:54:31

回答

2

我會建議查看給定文件的數據結構,並在該行的適當位置「剪切」數據,以免早期切斷幀。

這將意味着查看記錄的頻率和比特率,並使用它來獲取每幀的大小(以比特爲單位)。然後,您可以在不剪切單個幀數據的情況下拍攝多段音頻。

Have a look at this SO posting。它建議將您的音頻視爲二進制讀取字符串。因爲它是一個字符串,你可以基本上覆制,剪切和移動字符串,因爲你想要一個新的輸出文件。

檢查這一個:http://docs.python.org/library/binascii.html

也值得一讀:https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

要麼或者只是保持它作爲二進制和使用的字節數組。需要考慮頭文件以及發生了什麼,儘管每種格式都不相同。 MP3是很容易保持頭,因爲它是交錯之間的數據:

http://en.wikipedia.org/wiki/Mp3#File_structure

好了,一堆東西。


FINALLY:一,你會無疑已看到:http://sourceforge.net/projects/audiotools/

更新....

使用bits_per_sample()方法在音頻工具從sourceforge.net鏈接

- Returns the number of bits-per-sample in this audio file as a positive integer.

然後使用該信息和上面的一些信息將音頻分成一個字節數組。您至少可以重建一些RAW音頻數據。

您可以將文件的長度以位爲單位除以16,然後可以使用方法按照時間以毫秒爲單位劃分數組。這聽起來很複雜,但它是非常簡單的數學。

+0

這是一個非常有用的答案。我沒有接受它,因爲它沒有足夠專門回答這個問題,例如沒有詳細說明庫並可能提供使用說明。 – 2010-11-01 21:06:06

+0

@Tim McNamara我已更新該帖子以包含幾個鏈接。最後一個應該有希望給你一些快速的結果。 – Alex 2010-11-01 23:59:53

+0

感謝您將所有的工作放在答案中! – 2010-11-14 23:39:26

3

我會使用wave module打開文件,讀取標題,找出在10秒內有多少幀,然後讀取很多幀。將這些幀寫出到具有相同標題信息(長度除外)的文件直到完成。

+0

+1正是OP所需要的(對於包含PCM的WAV文件)。 – tzot 2010-11-29 13:55:27