ufal / whisper_streaming

Whisper realtime streaming for long speech-to-text transcription and translation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

speech can not be handled after some silence for a while or some different languages

weiyshay opened this issue · comments

Hi,
Thanks a lot for your project, I am trying to test it.

Overall it works well if it is consecutive speech while sometime the server stops any output after silence for a while or a different language. I am suspecting it is some limitation in split words.

Is there any option to recover it or reset it manually? Thanks!

Hi, can you give info for reproducibility? What language, what model, what min-chunk-size, do you use VAD?

It might be expected behavior. When two consecutive updates do not agree on a prefix, then it takes a long time to.
Someone in #39 suggested Voice Activity controller that would commit right after 500 seconds of silence. I implemented it in a branch. It works fine but it's not yet finished to be merged to master.

Thank you for your quick response!

I tried Japanese, Chinese and English, in case starting from any of them and then mixed with
another for several minutes and back to the original, the output is like some previous content.

I am using the default and not sure if VAD is selected.

python3 ./whisper_online_server.py --model_dir /faster-whisper-large-v2/ --port 50001 --lan en

output:

Japanese:----------------------------------------------------------------
963850 964230 まあ、
964350 967470 すイストまで書いたから次はあれだな
967590 978550 みたいな。今まで何書いたかっていうのに応じて次を出します。というわけで、今まで書いたやつ一つ前までの単語っていうのを下からバンって突っ込んでやるんですよね。で、次のを出すっていうのが基本的な
978550 978950 エンコーダ
978950 982870 ー、デコーダーモデルでございます。というわけで、前までの単語をバンって突っ込
982870 987230 んで、ポジショナルエンコーディングもボンって突っ込んで、ここからウニョーンとやります。
987710 988930 なんかマルチヘッドアテンション
988930 990790 やって、ノーマリゼーションやって、で、
990790 999310 でここ、2個目のマルチヘッドアテンションのところに入力の意味をバーンって突っ込んで、なんかやってやって、でノーマリゼーションして、でフィードファワード




Chinese:----------------------------------------------------------------
999310 1000950 やってノーマリゼーションしてっていう感じ
1000950 1002370 でなります。というわけ
1002370 1005200 で処理して、処理して、処理して、進む
1005200 1005860 っていう、これまたバ
1005860 1015280 ーって6回繰り返します。えー気になってきた一応マルチヘッドアテンションって何者?こいつが何者かは次に紹介しますけど、とにかくこんなシステムを6回やってボンって出して、
1015550 1017510 でこんなシステムを6回やってボンって出して、
1017910 1019770 そしたらまたベクトル列が出てきてるわけです
1019770 1020850 けど、最後の2つ
1020850 1023250 では、はい、リニ
1023250 1027530 ア変形変換とソフトマックスをやることによって確率にしてやります。
1027970 1032360 ちょっと書きましょう。はい、こんな感じでございます。
1032780 1034220 まあ、とにかくね、入力した数
1034240 1034860 だけ爆音
1034860 1038300 が出ているので、それぞれに線形変換をかましてやって、今まで圧
1038300 1040520 縮した世界の中で処理していたのを一気に単語
1040520 1042400 の次元のベクトルまで伸ばしてやります。
1042820 1045020 単語数まで伸ばしてやったやつにソフトマックスを
1045020 1046020 かけて確率にします
1046020 1046150 ね
1046150 1050670 って、まあ標準的なことが行われております。はい、というわけで
1050670 1052810 トランスフォーマーの全体像については
1052810 1053530 こんな感じです。
1053850 1054990 なんかあんま複雑なこと
1054990 1055650 をやってない
1055650 1058750 んですよね。入力をベクトルにして、まあポジショナルエンコ
1058750 1062590 ーディングってのはちょっと工夫が入ってますね。入力をベクトルにして何文字目だよ
1062590 1068290 っていうのを突っ込んだ後、マルチヘッドアテンションとフィードファワードをやっているのを6回繰り。
1068290 1068290 る。





 

Japanese:----------------------------------------------------------------
1111890 1244620 電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電子レンジで電

Lost some transcripts using the vad branch:

32870 33550  コンタクトを取れ
33990 39190 テンサー作動せよ もうやってますよ地域 異常なし
39690 40430 放射能
40830 41550  検知センス
41690 68030 どうしたのかしら立花教授の息子さんだねこちら古生団体の時子何人目なの
169580 170100 ミサイル
170100 171480 だろって誰が誰を打ったって
171480 171720 言うんだ

When you use --lan en, it expects that you speak English. Whisper is multi-lingual and robust and sometimes works on the "wrong" language, but it's an undocumented feature.

thanks for your comments, when I was transcribing a 'wav' file, it spent some time to detect the language until I give the '--lan' option. I will try no-lang option on stream.

BTW, whisper also supports translate, while it only output the translated text.
Is there an option to get both the original and the target languages like google translate?

thanks for your comments, when I was transcribing a 'wav' file, it spent some time to detect the language until I give the '--lan' option. I will try no-lang option on stream.

Speech language ID is not currently implemented in Whisper-Streaming, unlike in the offline Whisper.

Is there an option to get both the original and the target languages like google translate?

you can use two parallel instances of Whisper-Streaming. Batching for 2 outputs at once is currently not supported.