では、 、piper-whistle、および名前付きパイプを使用して、アドホックなローカル (オフライン) テキスト読み上げシンセサイザーをセットアップする方法を見てみましょう。 piper GNU/Linux ベースのシステムで Piper をセットアップするために、名前付きパイプを使用する一般的なアーキテクチャについて説明します。これは、piper の助けを借りて、少しの手動セットアップでシステム全体のテキスト読み上げを可能にするのに十分簡単です。 -ホイッスルといくつかの小さなトレードオフ (シンプルですが、並列音声処理はサポートされません)。 まず、 (これを書いている時点では ) からビルドされた最新の Piper スタンドアロンを取得しましょう。圧縮アーカイブをダウンロードした後、piper セットアップ用のディレクトリ構造を作成します。ルート ディレクトリは にあり、次のサブディレクトリがあります。 github でホストされているリポジトリ 2023.11.14-2 /opt/wind (構築されたパイパーを格納します) /opt/wind/piper (名前付きパイプが含まれます) /opt/wind/channels 解凍後、piper 実行可能ファイル 、および付随するライブラリおよび で利用可能になります。 /opt/wind/piper/piper espeak-ng-data Piper で使用される音声モデルを管理するには、Python で書かれたコマンドライン ユーティリティである Piper-whistle を使用することをお勧めします。これにより、音声のダウンロードと管理がより便利になります。 最新のホイール ファイルは、 または リリース ページから入手できます。ホイールファイルをインストールしたら、音声を取得して音声を生成しましょう。まず、 を呼び出してデータベースを更新しましょう。英語の音声ではアルバという女性の声がとても好きです。 whistle を使用すると、 を使用して、利用可能なすべての英語 (GB) 音声のリストを取得できます。音声はインデックス 2 にあります。したがって、インストールするには、単に を呼び出します。 gitlab github piper_whistle -vR piper_whistle list -l en_GB -i 2 piper_whistle install en_GB 2 次に、必要な名前付きパイプを作成しましょう。結果の構造は次のようになります。 (JSON ペイロードを受け入れます) /opt/wind/channels/speak (piper によって読み取られます) /opt/wind/channels/input (piper によって作成) /opt/wind/channels/ouput 名前付きパイプを作成するには、次のコマンドを使用できます: mkfifo -m 755 /opt/wind/channels/input 最後に、別のシェルに 3 つのプロセスを作成します。 tty0: tail -F /opt/wind/channels/speak | tee /opt/wind/channels/input tty1: /opt/wind/piper/piper -m $(piper_whistle path alba@medium) --debug --json-input --output_raw < /opt/wind/channels/input > /opt/wind/channels/output tty2: aplay --buffer-size=777 -r 22050 -f S16_LE -t raw < /opt/wind/channels/output tty0 のプロセスは、piper または による処理が終了した後でも、パイプが開いたままであることを確認します。このようにして、TTS リクエストをキューに入れ、その後、それらを再生または保存できます。 aplay 上記の構造を使用すると、piper-whistle は追加機能を提供するため、 を介して音声を生成できるようになります。 X11 を搭載したシステムでは を使用して、クリップボード内のテキストの音声バージョンを生成できます。 piper_whistle speak "This is quite neat" piper_whistle speak "$(xsel --clipboard --output)"