はじめに
[ローカル環境] faster-whisper を利用してリアルタイム文字起こしに挑戦の続編になります。
お試しで作ったアプリでは、十分な検証ができるものではなかったため、改善を行いました。
手探りで挑戦しましたので、何かご指摘がありましたらお教えいただければ幸いです。
2023 年 06 月 07 日
2023 年 06 月 18 日 更新
画面
下記にコードを置いています。
https://github.com/reriiasu/speech-to-text
改善ポイント
- faster-whisperに渡すパラメータを簡単に変更できる状態にない。
- faster-whisper のパラメータが多く簡単に入力できない。
==> GUIに対応して改善を図る。 - PyAudio だと ASIO が利用できない。
==> Sounddevice を利用する。
GUI
Eelを利用して HTML ベースの UI を作成する
Eel とはシンプルな Electron のようななオフライン HTML/JS GUI アプリを作成するための小さな Python ライブラリ
採用理由:慣れている HTML でいい感じの UI を作ろうと考えた。
苦労した点
-
パラメータが多すぎる。
- テンプレートを作成し、パラメータ情報を元に ChatGPT に依頼して作成しました。
全件出力するよう依頼しないとすぐ「他と同じですので同じようにやってください」と回答され、繰り返し作業の削減の依頼が達成できない状態に陥ります。 - パラメータを再帰的に取得できるよう HTML/JavaScript を作成
Eel と JavaScript 間は JSON でやり取り。
JSON の key とパラメータをマッピングして関数をコール - パラメータの意味・設定範囲がわからないパラメータが存在する。
バリデータの作成ができないので、データ型が合うようにしてそのままパラメータとして渡す方針としました。
- テンプレートを作成し、パラメータ情報を元に ChatGPT に依頼して作成しました。
課題
-
設定値の保存とロードができない。
対応しました。 -
意味のわからないパラメータが存在する。
faster-whisperのパラメータを調べてみました -
アプリとしての細かい制御パラメータが外部設定できない。
対応しました。
TODO
-
課題の解消
解決済み -
Silero VAD を試してみる
対応しました。 - フロントエンドとバックエンドに処理が分かれたので、フロントエンドから音声ファイルを送るようなこともできそう。
- フロントエンド側が肥大化するようならフレームワークの導入を検討
現状でも思ったよりコード量が増えてしまった。
ソースコード
下記にソースコードを置いています。(MIT)
https://github.com/reriiasu/speech-to-text