終末を待つだけの雑記

永久に青春を感じる中年がお届けします

手元リアルタイム翻訳システムの構築に一旦挫折した

数日、日中外に出ておらず冷房も寒いので除湿の弱でやっているが、それでも寒い
こんにちわ僕です

本当は技術ブログの方に書こうと思ったのだけど、どう書いてもポエムになるのでこっちに書くことにした
タイトルにもある通り、リアルタイム翻訳について調べていたというか少しだけ実装していた
実装していたと言っても、先人の知恵によりほぉ~ってなったところまでしかできなかったのだけど
参考にさせていただいた記事

ほとんど概ね参考にさせていただいた

knowledge.sakura.ad.jp翻訳の部分でDeepLが使えないとわかって参考にさせていただいた

tt-tsukumochi.com

あと、なんかうまくjson吐けないって思って触っていたものが辞書だったので、辞書の追加はupdateを使うんだよ、ということを後世の自分にメモ

構成的には去年の秋頃に試した、whisper->DeepLという構成をやろうと思っていただけど、
DeepLがAPI使うなら課金アカウントはさらに課金してね!って言ってきたので別のものでやった
そして結果的にAPIにお金を払う前にやんないといけないことが山ほどあるなぁということがわかったのでAPIにホイホイ課金しなくてよかった

whisperのリアルタイムの読み取り、割といいんじゃないかと思っていたがそんなことはなかった
何が難しいかというと、話者によるんだろうけれども、言葉の一区切りを判別するのが大変に難しいね、と言うことがわかった
参考にさせていただいたブログでは、VAD(Voice Activity Detection)という技術のOSSを使用している
当たり前のことなんだけど、喋ってる時間を先読みすることはできないので、一通り聞いてから翻訳が開始されるわけです
なので、喋り終わったあとマシンパワーをゴリッと使ってテキスト化→翻訳、という作業をしているので、聞き終わった→テキストに表示→翻訳文を表示→すでに喋り始めている→録音→テキスト化…というように続いていくのでどんどん遅れる
1時間程度生配信をかけながらテストしていたんだけど、どの話をしているのかわからないぐらい古い話題が画面に出続けるということになった

また、おそらくこれは日本語でも同じことなのだけど、ダラっと喋っているとどこが区切りなのかわからないということが起こる
これの問題は、微妙なところで話が切れてしまうと、もちろん正しい訳文ができないということだ
その正しいかな?というところの音声の一区切りについてになっているのが先述のVADで、これのチューニングをある程度詰めないと全然意図しないところで話が途切れちゃうので難しい
リアルタイムと言いつつ、数秒のディレイを抱えながら進んでいくことを考えると自分が勉強したほうがリアルタイムについては早い気がする
とかいいつつ勉強しないのだけれども。

別の観点に付いて発見をしたことがある
何気なくオーディオI/Fを使っていたが、マイクの入力とデスクトップの出力は当然違う
しかし、ブラウザなんかで音を拾いたいなと思った際にデスクトップの音声を穫れないじゃんとなった
VB-Audio Virtual Cable というようなものを使って今回は解消した

hidesanpo.com仮想オーディオデバイスというカテゴリのもので、十年ほど前に触っていたが意味が分からなかったが、今になってようやくわかってきた気がする

わかんないことだらけだぜ
日本語のwhisperのリアルタイムな文字起こしもしてみたが、VADの部分で結構詰まる
ビデオデータだとかなりいい感じで動くことは去年確認しているので、諸々これからに着たいという感じなのだろうな
ただ、話者によって随分変わるので、たまたま今回は書き起こしにくい型を参照してしまった可能性は否定できない

ドラえものんの世界になるには、もう何ひねりか必要そうだなという気持ちと、逆に心にゆとりさえあれば問題ないのかもしれないなという不思議な気持ちにもなった
昔同時通訳の小屋を立てていたことがあるけれど、たしかに同時通訳しているひとのスキルってすごいわ・・・
30分ほどを聞きながら喋りながら聞き続けているのだから・・・

関係ないけど戯言シリーズの最新刊読みました
面白かったです(読書感想文)