-
Notifications
You must be signed in to change notification settings - Fork 326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update whisper decoding algorithm #1355
Comments
評価対象。 ailia
whisper official
|
まずは公式のwhisperの各バージョンの変更と性能を把握する。 |
2023/03/08 -> 2023/03/14で劇的にbaseの性能が上がっている。 |
更新内容。 openai/whisper#1044 openai/whisper#1087 openai/whisper#1076 openai/whisper#1089 openai/whisper#1090 |
性能差はtiktokenへの移行によって発生している。 |
2023/03/08だと2セグメント目でtempratureが上がっていく。 |
kv_cacheをnormalとdynamicで比較すると結果は一致する。
normalとoptは結果は一致しない。
これは、MeanVarianceNormalizationがepsilonを持てないため、OptimizerでMeanVarianceNormalizationに変換した結果、torchとonnxで誤差が出ているためである。 |
本来、epsilonの影響は小さいが、baseはそもそもモデルが小さくて不安定なので、揺らぎが発生しやすい。 |
順当に最新のtimestampの扱いをマージする。 |
v3対応の際に、transcribe.pyの変更は取り込まれている。 |
MeanVarianceNormalizationのepsilonが問題のようなので、LayerNormalizationになるようにwhisperをopset=17で再エクスポートした。opset=17であれば、epsilonの誤差は発生しない。 |
whisperでは、デコードしたテキストをgzipで圧縮し、圧縮率によって繰り返し判定し、decode_fallbackを発生させ、繰り返しを抑制している。decode_fallbackでは、tempretureが上がり、サンプリングになるので、結果が推論のたびに変化する。 ただし、whisper-exportのリポジトリでbaseだと、torchでもdecode_fallbackが発生し、繰り返しが発生するが、最新のwhisper-officialだとdecode_fallbackが発生しない。 これは、timestampルールが影響しているようで、timestampルールを最新にすると、whisper-exportでもdecode_fallbackが発生せず、tempretureは上がらない。 |
下記を無効にすると、decode_fallbackが発生するので、timestampの、まきもどり検知は重要そう。
|
baseモデルはかなりセンシティブなようで、flg_ffmpegの有効・無効で結果が大きく異なる。 |
ailia-modelsのwhisperをエクスポートしたのが2022年10月で、そこから最近のwhisperはコード改良で繰り返しが発生しにくくなっている。そこで、最新のwhisperの変更をportする。
コミットログ:https://github.com/openai/whisper/commits/main/
デコーダ:https://github.com/openai/whisper/commits/main/whisper/decoding.py
メイン:https://github.com/openai/whisper/commits/main/whisper/transcribe.py
The text was updated successfully, but these errors were encountered: