2011-10-07 131 views
4

我正在開發一個項目,我需要以各種格式後處理一堆音頻文件。使用Ruby,PHP或Python進行音頻水印處理

  • 首先,文件需要轉換爲.WAV格式。
  • 其次,根據它們的長度,我需要在每個新的.WAV文件中以特定間隔插入一個短的可聽水印。

第一部分是容易的,使用編碼器LAME CLI。 的第二部分是它得到的艱難 - 我已經嘗試了一些方法既LAME和FFmpeg的,但似乎無法得到它的工作。

腳本運行在後臺cron作業,所以完全CLI連接。

如果可能的話,這將是巨大的,如果有人可以點我一個示例腳本/寶石或類,這是否在一些相關的方式。

+0

這是一個可見的水印,或者一般應該檢測不到的東西嗎? – Brad

+0

你說腳本正在運行,這裏真的沒有問題。所有三種語言都支持炮擊/系統調用。你的問題是什麼? – horatio

+0

@Brad,是的,它是一個可聽水印文件。當您播放生成的mp3時,您應該能夠每隔幾秒鐘收聽一次。 – SeanNieuwoudt

回答

1

這變得複雜。您需要實際混合音頻,據我所知,這是FFMPEG無法實現的。另一個問題是如果你拿一個MP3,把它轉換成WAV,那麼你可以使用它,並重新編碼回MP3。

我認爲你可以使用Sox爲這樣:http://sox.sourceforge.net/

使用FFMPEG第一個音頻解碼爲WAV,採樣率和比特深度調整必要。

然後,叫喚soxmixhttp://linux.die.net/man/1/soxmix

+0

上預覽循環時發生的情況爲什麼首先使用ffmpeg? SoX可以讀取mp3。如果這些是針對待售產品的音頻預覽,則由於轉碼而導致的質量損失甚至可能成爲特徵。 – mkb

+0

另請參閱:http:// stackoverflow。com/questions/4588998/mix-audio-tracks-with-offset-in-sox – horatio

+0

@mkb,我的印象是SoX只支持少數格式,但我現在看到我的假設是不正確的:http:/ /sox.sourceforge.net/soxformat.html – Brad

1

如果你準備採取Python的路線,我會建議SciPy,它可以讀取WAV文件轉換成與NumPy陣列:

from scipy.io import wavfile 
fs, data = wavfile.read(filename) 

(中official documentation包含詳細信息)。

聲音可以通過NumPy陣列操作例程來方便地操縱。然後

scipy.io.wavfile可以將文件寫入回WAV格式。

SciPy和NumPy是一般的科學數據工具。更多music-centric Python modules可在官方網站上找到。

+1

或使用echo-nest-remix:http://code.google.com/p/echo-nest-remix/ – mkb