🎙️

マイク入力をWhisperで音声認識

2022/10/22に公開

Whisperを試す

Whisperの音声認識が優秀ということで、マイクで試せるようにしてみました。

別に無理して使う必要なかったのですが、諸事上によりDockerを使ってマイクがつながったアプリとソケット通信したりしています。以下みたいな感じです。

リポジトリは以下です。

https://github.com/karaage0703/whisper-docker

ほとんど自分のためのメモですが、同じようなことしたい人がいるかもしれないので、簡単に説明を書いておきます。

説明はちょい雑です(すみません)。今後追記したり補足するかも…です。

セットアップ方法

Linux(Ubuntu)前提です。Windows(WSL2)でも多分動くと思います。

マイク

マイクは適当なUSBマイクをつなげてください。以下でデバイスを確認できます。

$ arecord -l

自分の環境での結果です。

**** ハードウェアデバイス CAPTURE のリスト ****
カード 0: Device [USB PnP Audio Device], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 1: UCAMC0220F [UCAM-C0220F], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 2: PCH [HDA Intel PCH], デバイス 0: ALC897 Analog [ALC897 Analog]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 2: PCH [HDA Intel PCH], デバイス 2: ALC897 Alt Analog [ALC897 Alt Analog]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

音量を以下のような感じで調整しましょう。数字はデバイスに合わせて変更してください。

$ amixer sset Mic 50 -c 0

マイクの録音テストをしてみましょう。以下コマンドでtest.wavというファイルに音声が保存できます。plughw:0,00,0カード ID, デバイス IDです。

$ arecord -D plughw:0,0 -r 16000 -f S16_LE test.wav

Docker

Dockerをインストールしましょう。以下記事参考にしてみてください。

https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa

GPUが不要ならとりあえず以下コマンド実行すればOKです。

$ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-docker.sh | /bin/bash
$ git clone https://github.com/karaage0703/whisper-docker
$ cd whisper-docker
$ docker build -t whisper .

使い方

whisper-dockerディレクトリで以下実行します。

$ docker run -it -d -v $(pwd):/workspace/ --net host --name whisper whisper
$ docker exec -it whisper bash
root@hostname:/workspace# python whisper-server.py

以下でマイク入力を認識するアプリを実行できます。

$ python mic.py

実行結果です。

https://twitter.com/karaage0703/status/1583726879571595265

アプリは日本語専用ですが、Whisper自体は、英訳したり、言語を自動検出したりできます。コードを好きにいじって活用してみると良いと思います。

Google Colabで使う方法

マイクからGoogle Colabで使う方法もあります。以下のNotebook参照ください。

https://github.com/karaage0703/stable-diffusion-colab-tools/blob/main/006_whisper_voice_recognition_stable_diffusion.ipynb

音声ファイルから文字起こしする方法

以下記事参照ください。

https://zenn.dev/karaage0703/articles/ecfab2effb7c31

まとめ

Whisperを試してみました。大きいモデルを使って長文だとかなりの性能が出るようですが、小さいモデルで短文だと、間違えもある程度ありそうな感触です。

ただ、今までのオープンな音声認識ライブラリと比べると格段の性能の進化がありそうです。エッジで音声認識使えると、いろいろ遊べそうですね。

https://karaage.hatenadiary.jp/entry/2015/08/24/073000

参考リンク

https://zenn.dev/kento1109/articles/d7d8f512802935

https://tadaoyamaoka.hatenablog.com/entry/2022/10/15/175722

https://ysdyt.hatenablog.jp/entry/whisper

https://zenn.dev/yuyakato/articles/2f3bb989a6b436

https://stackoverflow.com/questions/53645324/arecord-command-using-subprocess-in-python

https://qiita.com/lobmto/items/49f2a3fbfd913fcd35d5

https://nikkie-ftnext.hatenablog.com/entry/my-first-shion-speech-recognition-whisper-microphone-repeatedly

https://note.com/mega_gorilla/n/n343a279477a2

https://qiita.com/sakasegawa/items/1eae5038cfbd09baad44

まだ試せていませんが、リアルタイムに認識できそうなソフトもあるようです。

https://github.com/Nikorasu/LiveWhisper

https://github.com/saharmor/whisper-playground

【AIで字幕作成】Whisperで字幕の文字起こしをするWebアプリを作ってみた【コード付き】

Whisperより4倍速いらしいです。まだ試せていません
https://github.com/guillaumekln/faster-whisper

https://qiita.com/sakasegawa/items/50d76ead3038e735e4fe

https://speakerdeck.com/you/chatgptyan-jiu-hui-di-7dan-algyan

変更履歴

  • 2023/05/26 文字起こしのリンク追記

Discussion