この音声ファイルの中で比較的音が小さい領域を削除して、時間的に短くしたいと思います。
削除するパターンは先頭からの何秒、または終端からの何秒、またはその両方、の3パターンだけとします。
このような編集を、出来ればコマンドだけで自動的に行う良い方法を提案してください。
自動的に行う理由はもちろんファイルが多数あるからです。
soxというコマンドがおすすめです
例えばこんな感じです
$ sox input.wav output.wav silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse
入力ファイルは input.wav
出力ファイルは output.wav
マニュアルは https://linux.die.net/man/1/sox
日本語解説は例えば https://qiita.com/moutend/items/50df1706db53cc07f105 がすぐ見つかりますが,typo(書き間違え)が多いのでご注意ください
たくさんのファイルを一括で変換するなら bash と組み合わせて
mkdir -p output/ for x in input/*.wav; do y=`basename $x` sox $x output/$y.wav silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse done
という感じでしょうか
これで inputというディレクトリ以下にある *.wav なファイルをかたっぱしから処理して
変換後のファイルを output/ というディレクトリの下へ保存します
http://audacity-mp3.xyz/katto-ketugou-huyou/
https://storyinvention.com/audacity-noise/
https://storyinvention.com/audacity-pitch/
フリーソフトAudacityで ノイズ除去 カットできるとのことです
参考になさってください
自動的に行う方法と明記しているはずです
soxというコマンドがおすすめです
例えばこんな感じです
$ sox input.wav output.wav silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse
入力ファイルは input.wav
出力ファイルは output.wav
マニュアルは https://linux.die.net/man/1/sox
日本語解説は例えば https://qiita.com/moutend/items/50df1706db53cc07f105 がすぐ見つかりますが,typo(書き間違え)が多いのでご注意ください
たくさんのファイルを一括で変換するなら bash と組み合わせて
mkdir -p output/ for x in input/*.wav; do y=`basename $x` sox $x output/$y.wav silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse done
という感じでしょうか
これで inputというディレクトリ以下にある *.wav なファイルをかたっぱしから処理して
変換後のファイルを output/ というディレクトリの下へ保存します
出張中で返事が遅くなりました.ごめんなさい
すでに解決済みかもしれませんが,念のため補足させていただきます.
私の手元のPCで確認しましたが
上記のsoxコマンドでちゃんと時間的に短いwavファイルが生成できます
soxのsilenceオプションは無音区間を検出して,その区間を削除する命令です.
説明が不十分でしたが
$ sox input.wav output.wav silence 1 0.1 0.1%
で先ず先頭から無音区間を検出して,それを削除
次に
$ reverse
で音声データを前後反転させて
silence 1 0.1 0.1%
の部分で再度先頭から無音区間の検出と削除をすることで,末尾の無音区間を削除
最後に
$ reverse
で再度前後を入れ替える
という処理になっています
うまくいかない場合は silence のパラメータを調整してください.
例えば0.1%の部分が無音区間を決定する音量の閾値になって
この閾値より小さな音は無音とみなす仕組みになっています.
小さな音,ノイズや周囲音が含まれている場合は,とりあえずこの値を少し大きくするとうまくいくかもしれません.
パラメータの具体的な意味は,sox のマニュアルを確認してください.
またsoxコマンドの挙動がうまく把握できない場合は
audacity などを使って input.wav と output.wav を開いて
波形データを見ながら,音声ファイルの長さや,音量などをかくにんすると良いと思います.
以上,補足情報でした.
はい、解決しました。
出張中で返事が遅くなりました.ごめんなさい
すでに解決済みかもしれませんが,念のため補足させていただきます.
私の手元のPCで確認しましたが
上記のsoxコマンドでちゃんと時間的に短いwavファイルが生成できます
soxのsilenceオプションは無音区間を検出して,その区間を削除する命令です.
説明が不十分でしたが
で先ず先頭から無音区間を検出して,それを削除
次に
で音声データを前後反転させて
の部分で再度先頭から無音区間の検出と削除をすることで,末尾の無音区間を削除
最後に
で再度前後を入れ替える
2018/11/04 21:48:34という処理になっています
うまくいかない場合は silence のパラメータを調整してください.
例えば0.1%の部分が無音区間を決定する音量の閾値になって
この閾値より小さな音は無音とみなす仕組みになっています.
小さな音,ノイズや周囲音が含まれている場合は,とりあえずこの値を少し大きくするとうまくいくかもしれません.
パラメータの具体的な意味は,sox のマニュアルを確認してください.
またsoxコマンドの挙動がうまく把握できない場合は
audacity などを使って input.wav と output.wav を開いて
波形データを見ながら,音声ファイルの長さや,音量などをかくにんすると良いと思います.
以上,補足情報でした.
はい、解決しました。
2018/11/04 22:48:19