[英]How can I remove silence from an MP3 programmatically?
我有MP3文件,有時最后會沉默。 我想自動刪除這個沉默。 從我所知,它是“完美的”沉默(0幅度),而不是背景噪音。 內容的長度和沉默各不相同。
我發現了一些關於裁剪到前30秒或使用ffmpeg
裁剪到X和X + N秒的其他問題。 我想我可以使用類似的方法,只要我有辦法找到沉默開始的時候。 我將如何以編程方式執行此操作?
例如,一種可能的解決方案是使用命令找到“沉默”的開始。 我期待這樣的序列
end=$(ffmpeg some-command-to-find-start-of-silence)
ffmpeg -t "$end" -acodec copy -i inputfile.mp3 outputfile.mp3
該解決方案沒有使用ffmpeg
,但它確實需要可在Ubuntu上。
sox inputfile.mp3 outputfile.mp3 silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse
這樣可以減少文件中超過0.1秒的靜音。 如果您只關心修剪結束,可以簡化為:
sox inputfile.mp3 outputfile.mp3 reverse silence 1 0.1 0.1% reverse
可以在這里找到有關sox
silence
如何工作的詳細介紹。
您可能正在尋找無損解決方案,即不需要重新編碼 (降低質量)的解決方案。
我相信mp3splt正是你要找的。 它可以在命令行和GUI中使用。
sudo aptitude install mp3splt mp3splt-gtk
應該在Debian和Ubuntu上工作。
從手冊頁:
您還可以嘗試使用靜音檢測自動分割文件(請參閱-s選項), 使用靜音檢測修剪文件 (請參閱-r選項)或固定時間長度(請參閱-t選項)
檢測音頻流中的靜音。
當此過濾器在檢測到輸入音量小於或等於噪聲容限值的持續時間大於或等於最小檢測到的噪聲持續時間時,會記錄消息。
打印時間和持續時間以秒表示。
它有一些參數可以調整靜音的安靜程度,以及需要記錄多長時間的靜音。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.