この記事の著者は 360 Qiwu Troupe のフロントエンド開発エンジニアです
まとめ:
この記事では、OpenAI Whisper、FFmpeg、TTS (Text-to-Speech) テクノロジーを組み合わせて、ビデオを他の言語に翻訳し、音声を変更するプロセスを実現する方法を紹介します。OpenAI Whisper を使用して音声認識と翻訳を行い、次に FFmpeg を使用してビデオ オーディオ トラックを抽出してビデオを処理し、最後に TTS テクノロジを使用して新しい音声を生成し、元のビデオ オーディオ トラックを置き換える方法を検討します。このようにして、元のビジュアル コンテンツを維持しながら、新しい言語バージョンをビデオに追加できます。
序章:
現在、ビデオ コンテンツは世界中で急速に成長しており、言語を越えた配信と多言語サポートが重要な要件となっています。ただし、さまざまな言語でビデオを手動で字幕または吹き替えるのは、時間と費用がかかる可能性があります。この記事では、OpenAI Whisper、FFmpeg、および TTS テクノロジーを利用する方法を紹介します。これにより、コストと時間を削減しながら、動画を他の言語に翻訳し、音声を置き換えて多言語のニーズに対応できるようになります。
OpenAI Whisper: 音声をテキストに変換でき、複数の言語をサポートする強力な音声認識モデルです。Whisper を使用してビデオから生の音声をテキストに抽出し、翻訳サービスを使用してターゲット言語のテキストに変換します。
FFmpeg: ビデオとオーディオ トラックの抽出の処理 次に、FFmpeg ツールを使用してビデオを処理し、オーディオ トラックを抽出します。FFmpeg は、さまざまなオーディオおよびビデオ処理操作をサポートする強力なマルチメディア処理ツールです。FFmpeg を使用して元のビデオのオーディオ トラックを抽出し、後で新しく生成された音声に置き換えることができます。
TTS テクノロジー: 新しいスピーチの生成 元のビデオのオーディオ トラックを置き換えるには、新しいスピーチを生成する必要があります。ここでは、TTS (Text-to-Speech) テクノロジーを使用して、以前に翻訳されたターゲット言語のテキストを、対応する言語の音声に変換します。深層学習モデルに基づいた TTS テクノロジーは、元のビデオの内容に一致する自然で滑らかな音声を生成できます。
Whisper、FFmpeg、TTS の組み合わせ: ビデオ翻訳と音声置換の実装 最後に、Whisper によって生成されたターゲット言語テキストと TTS によって生成された新しい音声を結合し、FFmpeg を使用して新しい音声を元のビデオのオーディオ トラックに置き換えます。FFmpeg のトラック置換機能を使用すると、新しい音声がビデオ コンテンツと同期し、目的を持って生成されていることを確認できます。
結果表示
元のビデオ: https://caining0.github.io/statichtml.github.io/test.mp4
変換されたビデオ: https://caining0.github.io/statichtml.github.io/output.mp4
前提条件と依存関係
pip3 install openai-whisper
pip3 install ffmpeg-python
brew install ffmpeg
pip3 install TTS//https://github.com/coqui-ai/TTS
openai-ささやきの使用法
コマンドラインの使用法
次のコマンドは、medium
モデルを使用して音声ファイルから音声を文字に起こします。
whisper audio.flac audio.mp3 audio.wav --model medium
デフォルト設定(モデルを選択small
)は、英語の転写に適しています。英語以外の音声を含む音声ファイルを文字に起こすには、次のオプションを使用して言語を指定できます--language
。
whisper japanese.wav --language Japanese
追加すると--task translate
音声が英語に翻訳されます。
whisper japanese.wav --language Japanese --task translate
次のコマンドを実行して、利用可能なすべてのオプションを表示します。
whisper --help
Pythonの使用法
import whisper
model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])
例
whisper test.mp4 --language Chinese --task translate
[00:00.000 --> 00:03.400] If the Chinese people come to design a new building, it will be like this
[00:03.400 --> 00:06.360] A new building that has been rebuilt by a Chinese city
[00:06.360 --> 00:09.480] This is a real city, maybe it's your hometown
[00:09.480 --> 00:12.640] Let's take a short film with us and show its real face
[00:12.640 --> 00:14.480] The opening is a one-minute long lens
[00:14.480 --> 00:16.520] First, the time has changed, the new season has no shadow
[00:16.520 --> 00:18.680] A sense of depression is born
[00:18.680 --> 00:20.400] We randomly saw the red tail of it
[00:20.400 --> 00:22.120] This is the new building in the hundreds of square kilometers
[00:22.120 --> 00:24.480] The blue protective tent inside the blue sky city in the front
[00:24.480 --> 00:26.080] As in the front of the crystal ball
[00:26.080 --> 00:28.360] The back is a larger environmental structure
[00:28.360 --> 00:29.800] This is the shadow of the new building
[00:29.800 --> 00:30.600] The lens is far away
[00:30.600 --> 00:32.040] We see that there is a bandage
[00:32.040 --> 00:33.560] It is passing through a huge star
[00:33.560 --> 00:35.240] Those are the stars of the stars
[00:35.240 --> 00:37.280] The stars do not affect the shape of the bandage
[00:37.280 --> 00:39.240] This means that their motivation is super
[00:39.240 --> 00:42.040] At this time, the lens enters the blue protective tent inside the first crystal ball
TTS
from TTS.api import TTS
model_name = TTS.list_models()[0]
tts = TTS(model_name)
tts.tts_to_file(text="Hello world!", speaker=tts.speakers[0], language=tts.languages[0], file_path="output.wav")
#实践中需要把text更换为whisper提取内容
ffmpeg
音声なしのビデオを抽出する
ffmpeg -i /Users/cnn/Downloads/test.mp4 -an -y output_new.mp4
ノイズ除去
ffmpeg -y -i output_new.wav -af "anlmdn=ns=20" output_clean.wav
結合して切り取る
ffmpeg -i merge1.wav -i a_p1.wav -filter_complex "[0:0] [1:0] concat=n=2:v=0:a=1 [a]" -map [a] -y merge0.wav
その他の問題として、tts によって生成された音声が原因で、実際の長さが元のビデオの長さと異なるため、動的に調整する必要があります。
# 思路为,获取视频时长和原视频时间的比例,并设置,调整语速
ffmpeg -y -i output.wav -filter:a "atempo=0.8" output_new.wav
見込み
OpenAI Whisper、FFmpeg、TTS テクノロジーを組み合わせた、言語を超えたビデオ翻訳および音声ローカリゼーション アプリケーションには、幅広い見通しと市場の可能性があります。グローバル化の進展に伴い、映像コンテンツの多言語化の需要が高まっており、教育、メディア、エンターテインメント、ビジネスなどあらゆる分野で多言語対応が求められています。このアプリケーションは、コンテンツ作成者がコストと時間の投資を削減しながら、世界中の視聴者のニーズを満たすためにビデオを迅速にローカライズするのに役立ちます。教育分野では、多言語サポートにより世界的な学習交流と協力が促進され、メディアおよびエンターテインメント業界では、ローカライズされたビデオ コンテンツを通じてより幅広い視聴者市場を引き付けることができます。さらに、企業はこのアプリケーションを多国籍ビジネスや異文化コミュニケーションにおける音声ローカリゼーションに使用し、グローバルなチームワークやビジネスコミュニケーションを促進することもできます。将来的には、このようなアプリケーションがビデオ コンテンツ作成ツールやサービスの一部となり、効率的かつ自動化された言語間翻訳や音声ローカリゼーション機能を提供することが期待されています。つまり、このアプリケーションは、多言語ビデオのニーズに応えながら、さまざまな業界にビジネスチャンスをもたらし、グローバルなコミュニケーションと協力の発展を促進します。
不十分
TTS は若干ノイズが多いため、フォローアップの最適化を行うか、Polly などの有料バージョンを検討してください: https://aws.amazon.com/cn/polly/、
引用
https://github.com/openai/whisper
https://github.com/coqui-ai/TTS
https://ffmpeg.org/
- 終わり -
Qi Wu 劇団について
Qi Wu Troupe は 360 グループ最大のフロントエンド チームであり、グループを代表して W3C および ECMA メンバー (TC39) の活動に参加しています。Qi Wu Troupe は人材育成を非常に重視しており、エンジニア、講師、翻訳者、ビジネス インターフェース担当者、チーム リーダーなど従業員が選択できるさまざまな育成方向性があり、対応する技術研修、専門研修、一般研修、およびリーダーシップ研修を提供することで補完されています。 . もちろん。Qi Dance Troupe は、あらゆる種類の優れた才能に注目し、オープンで才能を求める姿勢で Qi Dance Troupe に参加することを歓迎します。