Comments (14)
評価対象。
ailia
python3 whisper.py -m base -i input.wav
whisper official
beam_size = 1
import numpy as np
import librosa
import soundfile as sf
import time
import whisper
whisper_small = whisper.load_model("base")
start = int(round(time.time() * 1000))
result = whisper_small.transcribe("sample.mp3", language="ja", beam_size = beam_size, verbose=True)
print("Whisper Small", result["text"])
end = int(round(time.time() * 1000))
estimation_time = (end - start)
print(f'\ttotal processing time {estimation_time} ms')
from ailia-models.
まずは公式のwhisperの各バージョンの変更と性能を把握する。
from ailia-models.
2023/03/08 -> 2023/03/14で劇的にbaseの性能が上がっている。
from ailia-models.
更新内容。
openai/whisper#1044
TokenizerをHuggingFaceからtiktokenに移行することでtensorflowへの依存を削除
openai/whisper#1087
word timestampの改善
openai/whisper#1076
githubのlanguage statsの表示改善
openai/whisper#1089
不正なunicodeが出現することへの対策
openai/whisper#1090
空入力でエラーが起きる問題を修正
from ailia-models.
性能差はtiktokenへの移行によって発生している。
tiktokenとtransformersは等価な論理かと思ったが、何か別の変更も入っている?
openai/whisper#1044
from ailia-models.
2023/03/08だと2セグメント目でtempratureが上がっていく。
原因は、古いtokenizerがsot_prev APIが50361を返さず、50324を返す。
2023/03/14のtiktoken版だと、正しく50361を返す。
ここを50361を返すように修正すると、2023/03/08でも変な出力が出ない。
この問題は下記でも報告されている。
zhuzilin/whisper-openvino#3
from ailia-models.
kv_cacheをnormalとdynamicで比較すると結果は一致する。
python3 whisper.py -m base -i sample.mp3 --normal
python3 whisper.py -m base -i sample.mp3 --dynamic_kv_cache
normalとoptは結果は一致しない。
python3 whisper.py -m base -i sample.mp3 --normal
python3 whisper.py -m base -i sample.mp3
これは、MeanVarianceNormalizationがepsilonを持てないため、OptimizerでMeanVarianceNormalizationに変換した結果、torchとonnxで誤差が出ているためである。
from ailia-models.
本来、epsilonの影響は小さいが、baseはそもそもモデルが小さくて不安定なので、揺らぎが発生しやすい。
from ailia-models.
順当に最新のtimestampの扱いをマージする。
from ailia-models.
v3対応の際に、transcribe.pyの変更は取り込まれている。
#1313 (comment)
decoding.pyの変更はまだ取り込まれていない。
from ailia-models.
MeanVarianceNormalizationのepsilonが問題のようなので、LayerNormalizationになるようにwhisperをopset=17で再エクスポートした。opset=17であれば、epsilonの誤差は発生しない。
axinc-ai/whisper-export#2
from ailia-models.
whisperでは、デコードしたテキストをgzipで圧縮し、圧縮率によって繰り返し判定し、decode_fallbackを発生させ、繰り返しを抑制している。decode_fallbackでは、tempretureが上がり、サンプリングになるので、結果が推論のたびに変化する。
ただし、whisper-exportのリポジトリでbaseだと、torchでもdecode_fallbackが発生し、繰り返しが発生するが、最新のwhisper-officialだとdecode_fallbackが発生しない。
これは、timestampルールが影響しているようで、timestampルールを最新にすると、whisper-exportでもdecode_fallbackが発生せず、tempretureは上がらない。
from ailia-models.
下記を無効にすると、decode_fallbackが発生するので、timestampの、まきもどり検知は重要そう。
if timestamps.numel() > 0:
# timestamps shouldn't decrease; forbid timestamp tokens smaller than the last
# also force each segment to have a nonzero length, to prevent infinite looping
if last_was_timestamp and not penultimate_was_timestamp:
timestamp_last = timestamps[-1]
else:
timestamp_last = timestamps[-1] + 1
logits[k, self.tokenizer.timestamp_begin : timestamp_last] = -np.inf
from ailia-models.
baseモデルはかなりセンシティブなようで、flg_ffmpegの有効・無効で結果が大きく異なる。
また、mp3を一度、wavに事前変換してもfallbackが発生する。
from ailia-models.
Related Issues (20)
- ADD bge-m3 HOT 1
- ADD VISTA (hands-segmentation-pytorch)
- ADD Ego2Hands
- ADD japanese-reranker-cross-encoder-large-v1 HOT 1
- ADD cross-encoder-mmarco-mMiniLMv2-L12-H384-v1 HOT 18
- How to obtain hubert_base.onnx that supports v2 [768]
- ADD BeatNet HOT 1
- ADD kotoba-whisper-v1.0 HOT 4
- Add gradio ui
- READMEにOpen in Colabボタンを追加
- Add phi3-mini HOT 12
- FP16 not working for CLAP HOT 1
- ADD g2p_en
- ADD IDN-VTON
- ADD soundchoice-g2p HOT 2
- image_pil.thumbnail((w,h), Image.ANTIALIAS) HOT 1
- ADD Anime face detection
- ADD Animate Anyone
- ADD yolov10
- ADD Phi-3-vision-128k-instruct HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ailia-models.