2013-08-06 14 views
7

特定のオーディオファイルに無音期間の開始タイムスタンプを出力しようとしています。最終的に、これらのタイムスタンプが与えられた場合、オーディオファイルをより小さなオーディオファイルに分割したいと考えています。元のファイルの一部を破棄しないことが重要です。それはやや仕事をした、が、SoXを使用して無音期間のタイムスタンプを検出して印刷する

私は

sox in.wav out.wav silence 1 0.5 1% 1 2.0 1% : newfile : restart 

(礼儀http://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/

を試みたが、それはまた、トリミングされたと私は起こってほしくない沈黙の期間を、廃棄されました。

「沈黙」は正しい選択ですか、あるいは私がやるべきことを達成するための簡単な方法がありますか?

ありがとうございました。

+0

このトピックに関するニュースはありますか?これを達成できますか?私はまったく同じことをする必要があります。現在、私は大胆さで無音を検出し、ラベルトラックをテキストファイルとしてエクスポートします。 – 3244611user

答えて

2

silenceエフェクト出力を無音を検出した位置にする方法や、すべての無音の音声を残す方法はありません(少なくとも、現在)。

SoXを自分で再コンパイルできる場合は、出力ステートメントを自分で追加してカット位置を調べてから別の呼び出しでtrimを使用してファイルを分割することができます。株式版では、あなたは不運です。

+0

こんにちは、 私はそれが本当ではないと思っていた。私は何ができるか見るでしょう。 – progfan

0

ネストポスト: すべてのsox出力ファイルを反復する別のスクリプトを実行できます(* .wavのfの場合)。 soxi -D $fを押し、サウンドクリップのDURATIONを取得します。 次に、システム時刻を秒単位で取得します。date "+%s"、次に減算して、録画が開始される時間を見つけます。

4
残念ながら

ないソックスを、しかし、ffmpegのは、あなたが探しているんまさにsilencedetectフィルタがあります。

ffmpeg -i in.wav -af silencedetect=noise=-50dB:d=1 -f null - 

(1秒以上、-50dBの検出しきい値は、 from the ffmpeg documentationをcribbed)

...これは次のような結果を出力します:

Press [q] to stop, [?] for help 
[silencedetect @ 0x7ff2ba5168a0] silence_start: 264.718 
[silencedetect @ 0x7ff2ba5168a0] silence_end: 265.744 | silence_duration: 1.02612 
size=N/A time=00:04:29.53 bitrate=N/A 
+0

これを達成できる2017年の新しいライブラリはありますか?オーディオファイルが与えられた場合には、スピーチ期間および無音期間のタイムスタンプを検出して出力することができる。ありがとう。 –

関連する問題