LoginSignup
12
4

[ローカル環境] faster-whisper を利用してリアルタイム文字起こしに挑戦2

Last updated at Posted at 2023-06-07

はじめに

[ローカル環境] faster-whisper を利用してリアルタイム文字起こしに挑戦の続編になります。

お試しで作ったアプリでは、十分な検証ができるものではなかったため、改善を行いました。
手探りで挑戦しましたので、何かご指摘がありましたらお教えいただければ幸いです。

2023 年 06 月 07 日
2023 年 06 月 18 日 更新

画面

UseAnimation.gif

下記にコードを置いています。
https://github.com/reriiasu/speech-to-text

改善ポイント

  1. faster-whisperに渡すパラメータを簡単に変更できる状態にない。
  2. faster-whisper のパラメータが多く簡単に入力できない。
    ==> GUIに対応して改善を図る。
  3. PyAudio だと ASIO が利用できない。
    ==> Sounddevice を利用する。

GUI

Eelを利用して HTML ベースの UI を作成する

Eel とはシンプルな Electron のようななオフライン HTML/JS GUI アプリを作成するための小さな Python ライブラリ

採用理由:慣れている HTML でいい感じの UI を作ろうと考えた。

苦労した点

  1. パラメータが多すぎる。

    • テンプレートを作成し、パラメータ情報を元に ChatGPT に依頼して作成しました。
      全件出力するよう依頼しないとすぐ「他と同じですので同じようにやってください」と回答され、繰り返し作業の削減の依頼が達成できない状態に陥ります。
    • パラメータを再帰的に取得できるよう HTML/JavaScript を作成
      Eel と JavaScript 間は JSON でやり取り。
      JSON の key とパラメータをマッピングして関数をコール
    • パラメータの意味・設定範囲がわからないパラメータが存在する。
      バリデータの作成ができないので、データ型が合うようにしてそのままパラメータとして渡す方針としました。

課題

  • 設定値の保存とロードができない。
    対応しました。
  • 意味のわからないパラメータが存在する。
    faster-whisperのパラメータを調べてみました
  • アプリとしての細かい制御パラメータが外部設定できない。
    対応しました。

TODO

  • 課題の解消
    解決済み
  • Silero VAD を試してみる
    対応しました。
  • フロントエンドとバックエンドに処理が分かれたので、フロントエンドから音声ファイルを送るようなこともできそう。
  • フロントエンド側が肥大化するようならフレームワークの導入を検討
    現状でも思ったよりコード量が増えてしまった。

ソースコード

下記にソースコードを置いています。(MIT)
https://github.com/reriiasu/speech-to-text

参考

12
4
3

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
12
4