16
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

reazonspeech 日本語音声認識のメモ(v1.1 で良くなった!)

Last updated at Posted at 2023-01-18

Whisper large と同精度とあります.
v1.1 から長時間音声対応 + 認識精度よりよくなりました!

$ reazonspeech input.mp3

でかんたん認識できるようになりました!

恋する女子のときめきゅんあるあるテスト音声で試します!

{"start_seconds": 0.48, "end_seconds": 11.319, "text": "恋する女子のときめきゅんあるあるこっちかなこっちかなもう違う"} 

正解は 恋する女子のときめキュン、あるある です. Whisper large での結果と合っています!

Screenshot from 2023-01-18 20-08-10.png

...
{"start_seconds": 426.522, "end_seconds": 430.454, "text": "男性の方々にも女性が待ち合わせの前に"}
{"start_seconds": 430.454, "end_seconds": 437.313, "text": "入念に準備をしているところだったりとかあとデート中は実はすごくドキドキしていることが"}
{"start_seconds": 439.28, "end_seconds": 445.377, "text": "あったりもするのでそういったところもぜひ見ていただいて日頃女性がこういうふうにして"}
{"start_seconds": 445.377, "end_seconds": 451.714, "text": "自分たちの前で頑張ってくれているんだなみたいなことが伝わる内容になっていると思います"}
{"start_seconds": 451.714, "end_seconds": 454.546, "text": "ぜひ見ていただきたいと思います有村架純でした"}

470 秒最後までうまく認識してくれました.
最後きちんと「有村架純」になりました
(Whisper large だと有村香澄とかになったりする)

model weight ダウンロード先

(reazonspeech のベースになっている) espnet では, モデルデータは huggingface の形式(?)に準拠しているようですが, モデルデータのダウンロード先は ~/.cache/huggingface ではなく,

デフォルトだと

<python folder>/lib/python3.10/site-packages/espnet_model_zoo/models--reazon-research--reazonspeech-espnet-next

に保存されます.
miniconda を使っている場合は,

~/miniconda3/envs/<envname>/lib/python3.10/site-packages/espnet_model_zoo/models--reazon-research--reazonspeech-espnet-next`

になります.
weight サイズは v1 の 600MB くらいからは増えて, next では 800MB くらいでした.

改善必要点

おおむね whisper large と同じくらいの認識率でしたが,

{"start_seconds": 33.333, "end_seconds": 38.993, "text": "おなかすいたなおおおなかすいたまだかなまだかな"}

など多少文字が複製されたりがありました. 15 秒単位で処理しているようなので, その切れ目あたりに音声がかぶっているとうまくいかないのかもしれません. それでも whisper medium よりは認識はよいでした.

CUDA 最適化はまだまだ...?

CUDA 12.1 なマシンで動かしたら torch tensor が CPU or device に無いよとか言われて実行エラーになりました.

reazonspeech の git+https で入るのだと espnet が古く,

.cpu() が抜けていていたためです.

ただ, espnet 側で .cpu() 付けて動かせるようにして処理速度はいまいちでした(3090 で 470 秒音声が認識 150 秒くらい). nvidia-smi で見ても稼働率は低いため, beam searh など, CPU で処理する部分に引っ張られて遅くなっているようです.
(ちなみに消費メモリは 4.4 GB でした)

そのうち改善されるかもはしれませんが, ESPNet 側でいろいろ対応しないといけないようなきもするので, とりあえずは CPU 実行でしょうかね.
whisper.cpp で reazonspeech モデル実行部分だけすり替えできるようになるとよりよいかもです.

まとめ

CommonVoice などの人の声だけのテストデータに対してはそこそこいい感じで判定してくれる感じではありました.
モデルサイズは 800 MB くらいですので, Siri みたいなユースケースでスマホに組み込んで数秒単位の音声認識するのにも使えそう(whisper large も頑張ればいけるがちょっとつらい). お料理中に声で応答「お料理で豚こまが 50g 余った! 豚こま 50g でええ感じの明日のお弁当のおすすめ教えて!」と ChatGPT に問い合わせるとか!

より精度ほしいような, 議事録や, 映画とかなどのいろいろ雑音の入った音声データの文字起こしなどのユースケースでは, もうしばらくは Whisper large を使うのがよいでしょう.
そのうち ReazonSpeech が改善されて Whisper 置き換えもできるようになるでしょう

TODO

  • rnnoise とかでの雑音除去をプリプロセスで入れてみる https://github.com/werman/noise-suppression-for-voice
  • スマホに組み込んで使えるようにする(Whisper.cpp あたり使いモデル部分だけ改変でいけんかのう)
  • wav2vec あたりと組み合わせ phoneme, 単語単位でのアラインメントにチャレンジ
16
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?