TimeThingは、テキストトランスクリプトをオーディオに合わせるためのライブラリです。オーディオファイルと、完全なテキストトランスクリプトを備えたテキストファイルを提供します。 TimeThingは、提供された音声でこの単語または文字が話されたときを示す各単語と文字のタイムコードのリストを出力します。 TimeThingは、速くて正確であるように努め、GPUまたはCPUの両方で実行できます。
TimeThingは、Face AIコミュニティを抱き締める強力なWAV2VECベースの音声認識モデルを使用しています。このアプローチについては、このPytorchチュートリアルとこのペーパーで説明します。
タイミングをインストールするには、Python 3.7または3.8のインストールが必要です。その後、PIPを使用してインストールできます。
pip install timething長いオーディオコンテンツを対応するトランスクリプトに揃えることをお勧めします。たとえば、ポッドキャストをその転写と整列させることをお勧めします。エピソードは数時間の長さであり、転写はポッドキャスターによって与えられます。別のケースでは、オーディオブックを書かれたテキストに合わせてください。
timething align-long
--audio-file fixtures/audio/keanu.mp3
--transcript-file fixtures/keanu.cleaned.txt
--alignments-dir aligned
--batch-size 10
--n-workers 5
TimeThingは、発話レベルのオーディオスニペットのデータセットをテキストの転写に合わせることができます。これは、データセットをクリーンアップするためにタイム化を使用できる機械学習設定で特に役立ちます。
現在、次の形式で1つ以上の章を含むフォルダーを見つけることを期待しています。
└── dir/
├── text.csv
├── aligned/
└── audio/
├── chapter01.mp3
├── chapter02.mp3
└── chapter03.mp3
TimeThingは、MP3、WAV、FLACC、OGG/Vorbisなど、多くのオーディオ形式を処理できます。
ファイルtext.csvは、次の形式でWAVファイルごとに1つのエントリを含める必要があります。
audio/chapter01.mp3|The transcript for chapter01 on a single line here
audio/chapter02.mp3|The transcript for chapter02 on a single line here
audio/chapter03.mp3|The transcript for chapter03 on a single line here
たとえば、CPUまたはGPUでタイムタイムを実行できるようになりました。
timething align-short --metadata text.csv --alignments-dir alignedより多くのオプションを指定することもできます。
timething align-short
--language german
--metadata text.csv
--alignments-dir aligned
--batch-size 8
--n-workers 8 timething --help完全な説明のためにヘルプ。
結果は、特定のフォルダー( alignedなど)に書き込まれます。それらは、各オーディオIDにちなんで名付けられた単一のJSONファイルに書き込まれます。各ファイルには、文字レベルと単語レベルのアライメントが含まれます。単語レベルのアライメントについては、各単語には秒単語の開始時間、秒単位の終了時間、その単語の信頼レベル、および単語ラベルがあります。文字レベルのアライメントには、対応する結果があります。
fixtures/にアラインメント出力を備えたデータセットの例を見つけることができます。 「one.mp3」のアラインメントは、「one」という単語のみを含むものです。
{
"n_model_frames" : 72 ,
"n_audio_samples" : 23392 ,
"sampling_rate" : 16000 ,
"chars" : [
{
"label" : " O " ,
"start" : 0.5888611111111111 ,
"end" : 0.6497777777777777 ,
"score" : 0.9999777873357137
},
{
"label" : " n " ,
"start" : 0.6497777777777777 ,
"end" : 0.7106944444444444 ,
"score" : 0.99994424978892
},
{
"label" : " e! " ,
"start" : 0.7106944444444444 ,
"end" : 0.731 ,
"score" : 0.9999799728393555
}
],
"chars_cleaned" : [
{
"label" : " o " ,
"start" : 0.5888611111111111 ,
"end" : 0.6497777777777777 ,
"score" : 0.9999777873357137
},
{
"label" : " n " ,
"start" : 0.6497777777777777 ,
"end" : 0.7106944444444444 ,
"score" : 0.99994424978892
},
{
"label" : " e " ,
"start" : 0.7106944444444444 ,
"end" : 0.731 ,
"score" : 0.9999799728393555
}
],
"words" : [
{
"label" : " One! " ,
"start" : 0.5888611111111111 ,
"end" : 0.731 ,
"score" : 0.9999637263161796
}
],
"words_cleaned" : [
{
"label" : " one " ,
"start" : 0.5888611111111111 ,
"end" : 0.731 ,
"score" : 0.9999637263161796
}
]
}アラインメントを実行したら、ファイルを小さなファイルに切り取り、結果を新しいフォルダーに書き込むことができます。たとえば、録音のいずれかを8秒を超えたくない場合は、新しいディレクトリを作成して、次のようにデータを再カットできます。
timething recut
--from-metadata text.csv
--to-metadata ~ /smaller-recordings/text.csv
--alignments-dir alignments
--cut-threshold-seconds 8.0この例の結果は、〜/より小さな録画に書き込まれます。
現在サポートされている言語はModels.yamlにあります。現在、英語、ドイツ語、オランダ語、ポーランド語、イタリア語、ポルトガル語、スペイン語、フランス語、ロシア語、日本、ギリシャ語、アラビア語のモデルが含まれます。これまでのところ、ドイツのモデルのみをテストしました。
抱き合っている顔AIコミュニティで利用可能なCTC音声モデルが多数あるため、新しい言語を簡単に追加することができます。あるいは、WAV2VECは、執筆時点で87の一般的な音声言語を使用して、ここで説明するように微調整することができます。
テキストクリーニングのサポートは現在最小限であり、新しい言語では拡張する必要がある場合があります。
モントリオールの強制アライナーやエーネアスなど、タイムシットのように強制的なアライメントを既に行うことができる多くの成熟したライブラリがあります。ここでは、ツールの1つのリストが維持されています。
このライブラリでの最初の作業を開いた状態にしてくれた鳥が鳥になってくれたことに感謝します。