BLAH S PEECH-TO- T EXTでは、キーボードショートカットとwhisper.cppを使用して、LinuxでのスピーチからのBLA(H)ST入力テキストを使用できます。マイクを起動し、オフラインで高品質の多言語認識を実行します。ローカルLLMSで拡張され、Linuxコンピューターと会話する強力なツールになります。
Blahstは、おそらくLinuxの最もリーンなWhisperベースのスピーチツーテキスト入力ツールであり、whisper.cppの上に座っています。
wsimlスクリプトでコマンドラインから翻訳できる低リソース、最適化されたコマンドラインツールを使用して、音声テキスト入力は非常に速く発生します。いくつかのローカルLLM機能(AIアシスタント、翻訳者、スケジュラー、テスト段階のCLIガイド)を備えたデモビデオ(オーディオを解除してください)を次に示します。
上記のビデオでは、オーディオはスクリーンエンケストを描画するシステムから始まります(私のGNOME拡張機能「Voluble」はすべてのGNOMEデスクトップ通知を声をかけます)、その後、音声入力/認識の複数のターンが続きます。最後に実証されているのは、Blahst(whisper.cpp)によって転写されたテキストを使用し、LLMプロンプトにフォーマットして、中国の翻訳をテキストとして返すローカル多言語LLM(llama.cppまたはllamafile)に送信し、Neural ttsを使用して話すようにする「AI関数」の1つです。これをリーン実行可能ファイルを使用してコマンドラインから調整すると、システムが驚くほどきびきびとしています(ビデオから、PCが汗をかくことはほとんど壊れていないことがわかります - 温度は低いままです)。
上記のビデオ(Unmuteをお願いしてください)は、ユーザーがより長い一時停止で音声入力を終了するまで、WSIから変更してループで転写されるBlooperの使用を示しています(プリセットとして〜3Sec)。 Xdotool(またはWaylandユーザーのためのYdotool)を使用すると、テキストは、一時停止(またはHotkey Intruption)で自動的に貼り付けられます。上記のビデオでは、スピーチは合成音声で生成され、マイクによって収集されます。これにより、テキストを同時に編集できます(マルチタスカー、自宅でこれを試さないでください:)。最後に、トップバーのマイクアイコンが消えるはずで、プログラムの出口を示します。スクリーンキャストユーティリティにはアイコンにも主張があるため、ビデオでは発生しません。
Blahstのアイデアは、モンゴルの襲撃に相当するUIフリーのソフトウェアになることです。 CPU/GPUアクションの短く強力なバーストであり、クリップボードと相対的なデスクトップの平和にテキストトレースのみがあり、完全になくなっています。ホットキーを使用して、マイクの録音を開始および停止し、録音されたスピーチをwhisper.cppに送信します。ほとんどのLinuxデスクトップ環境と分布で機能するはずの普遍的なアプローチ。
作業は、スクリプトの1つによって行われます。
音声認識は、whisper.cppによって実行されます。Whisper.cppは、Linuxシステムで事前に拡張するか、LANまたはLocalHostでサーバーインスタンスとして利用できる必要があります。 Alternativellyでは、実際にポータブル実行可能ファイルをダウンロードして使用することを選択できます(埋め込まれたWhisperモデルを使用)whisperfile、Llamafileリポジトリの一部です。
ホットキーで音声入力が開始されると、マイクのインジケータがトップバー(少なくともGNOMEで)に表示され、録音の期間中に表示されます(別のホットキーと断ち切ることができます)。上部バーからマイクアイコンの消失は完了を示し、転写されたテキストはクリップボードから貼り付けることができます。システムでは、マイクのアイコンが消え、テキストが転写時間が長くなるとクリップボードに到達する前に、わずかな遅延が発生する可能性があります。私のコンピューターでは、whisper.cppサーバーAPIを介して、話されたテキストの平均段落について、ローカルwhisper.cppで300ミリ秒)未満です。
たとえば、標準のCTRL+Vを使用したキーボードのみの操作の場合、標準のクリップボードはX11およびWayland( wsiまたはwsiml )で使用されますが、 wsi -p (またはwsiml -p )は主要な売りを使用し、テキストはミドルマウスボタンで貼り付けられます)。左側のペーストの場合、音声録音は右手でトリガーされたホットキーに追いやることができます。 **たとえば、数値キーパッドに未使用の「+」(録音を開始する)と「録音を停止する)キーをセットアップしました。


install-wsiこれらのほとんどを処理します)。免責事項:著者は、このドキュメントの内容とやり取りすることから生じる場合とそうでない場合がある結果に対してクレジットを取得せず、責任を負いません。提案されたアクションと自動化(インストール場所など)は単なる提案であり、著者の選択と意見に基づいています。味や特定の状況に合わない可能性があるため、必要に応じて調整してください。
選択したフォルダーで、Blahstリポジトリをクローンしてから、以下からインストールメソッドを選択します。
git clone https://github.com/QuantiusBenignus/BlahST.git
cd ./BlahST
(whisper.cppがインストールされ、クローンされたwhisper.cppリポジトリで「make」でコンパイルされた「メイン」実行可能ファイルがインストールされていると仮定します。前提条件セクションを参照)
cd $HOME/.local/bin; chmod +x wsi wsiAI wsiml
$HOME/.local/bin/ ($ pathの一部)で作成します ln -s /full/path/to/whisper.cpp/main $HOME/.local/bin/transcribe
転写が$パスにない場合は、 WSIの呼び出しを編集して絶対パスを含めるか、その場所を$ PATH変数に追加します。それ以外の場合は、スクリプトが失敗します。 whisper.cppをコンパイルしたくない場合、またはそれに加えて、適切なwhisperfileの実行可能フラグをダウンロードして設定します。
cd $HOME/.local/bin
wget https://huggingface.co/Mozilla/whisperfile/resolve/main/whisper-tiny.en.llamafile
chmod +x whisper-tiny.en.llamafile
wsi 、 wsiAI 、 wsiml 、またはblooperスクリプト内には、最初の近くに、すべてのユーザーが構成可能な変数が収集されている「ユーザー構成ブロック」という名前の明確なマークのセクションがあります。ほとんどはそのまま残ることができますが、重要なものは、転写中に使用したい(Whisper、LLM、TTS)モデルファイルの場所(またはwhisper.cppサーバーのIPおよびポート番号)の場所です。 whisperfileを使用している場合は、以前にダウンロードした実行可能ファイルWHISPERFILE=whisper-tiny.en.llamafileのファイル名にwhisperfile変数を設定してください。
手動と自動インストールの両方で、音声入力を開始および停止するには
/home/yourusername/.local/bin/wsi -pで、ミドルマウスボタンを使用するか、クリップボードを使用するために.../wsiに変更します。wsiをwsimlに置き換え、Whisperfileを使用する場合は、 -wフラグ、つまり/home/yourusername/.local/bin/wsi -wを追加します)。最後に、LLM関数をサンプリングするには、 wsiをwsiAIに置き換えます。オーケストレータースクリプトには、Sox(Rec)への呼び出しに沈黙検出フィルターがあり、2秒の沈黙で(最良の場合)の記録を停止します。さらに、待機したくない場合、または沈黙の検出しきい値に問題がある場合:
偉大なハッキングの精神で、重要な組み合わせで手動でレコーディングを中断できるようにしたい人のために、システム内蔵機能を使用します。
pkill --signal 2 recそれは単純です。新しいキーバインディングが他の何かのためにすでにセットアップされていないことを確認してください。スクリプトがスピーチを録音しているとき、新しいキーコンボで停止することができ、転写はすぐに開始されます。
/home/yourusername/.local/bin/wsi -pまたは.../wsiクリップボードを使用します。wsiをwsimlに置き換え、Whisperfileを使用する場合は、 -wフラグ、つまり/home/yourusername/.local/bin/wsi -wを追加します)。最後に、LLM関数をサンプリングするには、 wsiをwsiAIに置き換えます。pkill --signal 2 recで同様に行う必要があります。/home/yourusername/.local/bin/wsiまたは.../wsi -pwsiをwsimlに置き換え、Whisperfileを使用する場合は、 -wフラグ、つまり/home/yourusername/.local/bin/wsi -wを追加します)。最後に、LLM関数をサンプリングするには、 wsiをwsiAIに置き換えます。pkill --signal 2 recで同様に行う必要があります。システムにインストールされているバージョンに応じて、上記の手順にわずかなバリエーションがある場合があることに注意してください。 Mate、Cinnamon、LXQT、Deepinなどの他の多くの環境については、上記の例と少し似ている必要があります。システムデスクトップ環境のドキュメントを参照してください。
ホットキーのコンボのプレスでは、 wsi -pスクリプトはスピーチを記録し(ホットキーまたはサイレンス検出で停止します)、whisper.cppのローカルコピーを使用し、X11またはウェイランドの下のプライマリセレクションに転写されたテキストを送信します。その後、必要なのは、どこでもミドルマウスボタンで貼り付けます。 (マウスを右手で持っている人のために、左手のホットキーを録音する音声は理にかなっています。)
フラグなしでwsiを使用している場合(アプローチは共存でき、異なるホットキーのセットを設定するだけです)、転写されたテキストがX11またはWaylandのいずれかの下のクリップボード(プライマリ選択ではなく)に送信されます。次に、 CTRL+V (GNOME端子のCTRL+SHIFT+V )またはSHIFT+INSertキーで通常どおりにキーを使用して貼り付けが行われます。 (ほとんどの人にとって、右側のホットキーはうまく機能するでしょう。)
wsi -n (独自のホットキーで選択された)でネットワークを介して転写される場合、スクリプトは録音されたオーディオを実行中のwhisper.cppサーバー(lanまたはlocalhost )に送信しようとします。次に、テキスト応答を収集し、 CTRL+V (GNOME端子のCTRL+SHIFT+V )またはSHIFT+INSertキー(ミドルマウスボタンで貼り付けてwsi -n -pを使用して貼り付けます)で貼り付けてフォーマットします。
コンパイルされたwhisper.cppの代わりに、またはコンパイルされたwhisper.cppの代わりにwhisperfileを使用する場合、 wsi -w ...で呼び出します。
多言語ユーザーの場合、WSIの機能に加えて、 wsiml言語を指定する機能、EG -l frと-tで英語に変換するオプションを提供します。ユーザーは、原則として、複数のホットキーを転写または翻訳するさまざまな言語に割り当てることができます。たとえば、2つの追加のホットキーを設定できます。1つは転写用、もう1つはコマンドwsiml -l frとwsiml -l fr -tを割り当てることにより、フランス語から翻訳することができます。
実験:ユーザーは、継続的な自動音声からテキストへの入力に付属のスクリプトブルーパーを使用できます(Ctrl+Vを押すか、マウス中央のマウスをクリックする必要はありません)。これは、上記の2番目のビデオで示されています。クリップボードはデフォルトで使用され、テキストはキーボードCarretの下で自動貼られますが、原則として主要な選択をセットアップすることができます。中央のマウスボタンクリックをシミュレートし、テキストを(やや任意の)時間のマウスポインターの現在の位置に貼り付けます。これは、物理的な環境に依存する沈黙の検出に依存していることに注意してください。騒々しい環境では、ホットキーを使用して録音を停止します。
スピーチの終わりに一貫して声(フェードアウト)を下げた場合、しきい値が高い場合に遮断される可能性があるため、しきい値を任意に上げることはできません。その場合、それを数%に下げます。
音声を振幅でノイズと区別できるようにすることをお勧めします(マイクの近くではっきりと話します)。一方、外部ノイズ(マイクの保護された位置、ノイズキャンセルハードウェアなど)は、SNR(音声とノイズの比率:-)であるため、優れた音声信号レベルでより効果的になります。
スピーチがキャプチャされた後、音声認識のためにtranscribe (whisper.cpp)に渡されます。これは、リアルタイムよりも速く発生します(特に高速CPUの場合、またはwhisper.cppのインストールがCUDAを使用する場合)。転写のコマンドラインパラメーターに-tnを追加することで使用する処理スレッドの数を調整できます(whisper.cppドキュメントを参照してください)。次に、スクリプトはテキストを解析して、非スピーチアーティファクトを削除し、フォーマットし、X11またはWaylandツールのいずれかを使用してプライマリセレクション(クリップボード)に送信します。
原則として、whisper(whisper.cpp)は多言語であり、正しいモデルファイルを使用して、このアプリケーションは正しい言語で転写されるUTF-8テキストを出力します。 wsimlスクリプトはマルチリングの使用専用であり、それとともにユーザーは音声入力の言語を選択することができます(LCはLCが言語コードである-l LCフラグを使用-t 。ユーザーは、複数のホットキーを転写または翻訳したいさまざまな言語に割り当てることができます。たとえば、2つの追加のホットキーを設定できます。1つは転写用、もう1つはコマンドwsiml -l frとwsiml -l fr -tを割り当てることにより、フランス語から翻訳することができます。
サーバーモードを使用する場合、2つの選択肢があることに注意してください。 Precompiled Whisper.cpp ServerまたはダウンロードされたWhisperfile(サーバーモード)を使用すると、事前に設定されたホストとポート番号で聞くことができます。オーケストレータースクリプトは同じようにそれらに近づきます。
音声からテキストへの転写は、メモリおよびCPU集約型タスクであり、読み取りおよび書き込みアクセスのための高速ストレージは役立ちます。そのため、 WSIはSSD/HDDの「粉砕」: TEMPD='/dev/shm'速度と削減するために、メモリに一時的なファイルとリソースファイルをメモリに保存します。このタイプ「TMPFS」のマウントポイントは、RAMで作成され(たとえば少なくとも8GBがあると仮定しています)、ユーザースペースアプリケーションのためにカーネルで利用可能になります。コンピューターがシャットダウンされると、自動的に拭き取られます。これは、中間ファイルが必要ないため問題ありません。実際、一部のタイプのアプリケーション(電子を見る)では、Systemwide /TMPマウントポイントをRAMに保持することは有益です(IMHO)。 /TMPをRAMに移動すると、アプリケーションの起動を少しスピードアップできます。あらゆる電子アプリの歓迎スピードアップ。最も単純な形式では、この移行は簡単です。実行するだけです。
echo "tmpfs /tmp tmpfs rw,nosuid,nodev" | sudo tee -a /etc/fstabを再起動し、Linuxコンピューターを再起動します。特にHDDがメインストレージメディアである場合、前述の理由で、同じ場所(/dev/shm)でwhisper.cppが必要とするASRモデルファイルを移動することもできます。これらは大きなファイルであり、ターミナルセッションの開始時(またはシステムの起動時)にこの場所に転送できます。これは、このようなものをその中に配置することで、 .profileファイルを使用して実行できます。
([ -f /dev/shm/ggml-base.en.bin ] || cp /path/to/your/local/whisper.cpp/models/ggml* /dev/shm/)