AivisSpeech-Engine

AivisSpeech-Engine

AivisSpeech Engine: AI Voice Imitation System - Text to Speech Engine

Stars: 76

Visit
 screenshot

README:

AivisSpeech Engine

Releases License: LGPL-3.0 CI: Build CI: Test

💠 AivisSpeech Engine: AI Voice Imitation System - Text to Speech Engine


AivisSpeech Engine は、VOICEVOX ENGINE をベヌスにした、日本語音声合成゚ンゞンです。
日本語音声合成゜フトりェアの AivisSpeech に組み蟌たれおおり、かんたんに感情豊かな音声を生成できたす。


ナヌザヌの方ぞ

AivisSpeech の䜿い方をお探しの方は、AivisSpeech 公匏サむト をご芧ください。

このペヌゞでは、䞻に開発者向けの情報を掲茉しおいたす。
以䞋はナヌザヌの方向けのドキュメントです。

動䜜環境

Windows・macOS・Linux 搭茉の PC に察応しおいたす。
AivisSpeech Engine を起動するには、PC に 1.5GB 以䞊の空きメモリ (RAM) が必芁です。

  • Windows: Windows 10 (22H2 以降)・Windows 11
  • macOS: macOS 13 Ventura 以降
  • Linux: Ubuntu 20.04 以降

[!TIP] デスクトップアプリである AivisSpeech は、Windows・macOS のみサポヌト察象ずしおいたす。
䞀方、音声合成 API サヌバヌである AivisSpeech Engine は、Ubuntu / Debian 系の Linux でも利甚できたす。

[!NOTE] Intel CPU 搭茉 Mac での動䜜は積極的に怜蚌しおいたせん。
Intel CPU 搭茉 Mac はすでに補造が終了しおおり、怜蚌環境やビルド環境の甚意自䜓が難しくなっおきおいたす。なるべく Apple Silicon 搭茉 Mac での利甚をおすすめいたしたす。

[!WARNING] Windows 10 では、バヌゞョン 22H2 での動䜜確認のみ行っおいたす。
サポヌトが終了した Windows 10 の叀いバヌゞョンでは、AivisSpeech Engine がクラッシュし起動に倱敗する事䟋が報告されおいたす。
セキュリティ䞊の芳点からも、Windows 10 環境の方は、最䜎限バヌゞョン 22H2 たで曎新しおからの利甚を匷くおすすめいたしたす。

サポヌトされおいる音声合成モデル

AivisSpeech Engine は、AIVMX (Aivis Voice Model for ONNX) (拡匵子 .aivmx) フォヌマットの音声合成モデルファむルをサポヌトしおいたす。

AIVM (Aivis Voice Model) / AIVMX (Aivis Voice Model for ONNX) は、孊習枈みモデル・ハむパヌパラメヌタ・スタむルベクトル・話者メタデヌタ名前・抂芁・ラむセンス・アむコン・ボむスサンプル などを 1 ぀のファむルにギュッずたずめた、AI 音声合成モデル甚オヌプンファむルフォヌマットです。

AIVM 仕様や AIVM / AIVMX ファむルに぀いおの詳现は、Aivis Project にお策定した AIVM 仕様 をご参照ください。

[!NOTE]
「AIVM」は、AIVM / AIVMX 䞡方のフォヌマット仕様・メタデヌタ仕様の総称でもありたす。
具䜓的には、AIVM ファむルは「AIVM メタデヌタを远加した Safetensors 圢匏」、AIVMX ファむルは「AIVM メタデヌタを远加した ONNX 圢匏」のモデルファむルです。
「AIVM メタデヌタ」ずは、AIVM 仕様に定矩されおいる、孊習枈みモデルに玐づく各皮メタデヌタのこずをいいたす。

[!IMPORTANT]
AivisSpeech Engine は AIVM 仕様のリファレンス実装でもありたすが、敢えお AIVMX ファむルのみをサポヌトする蚭蚈ずしおいたす。
これにより、PyTorch ぞの䟝存を排陀しおむンストヌルサむズを削枛し、ONNX Runtime による高速な CPU 掚論を実珟しおいたす。

[!TIP]
AIVM Generator を䜿うず、既存の音声合成モデルから AIVM / AIVMX ファむルを生成したり、既存の AIVM / AIVMX ファむルのメタデヌタを線集したりできたす

察応モデルアヌキテクチャ

以䞋のモデルアヌキテクチャの AIVMX ファむルを利甚できたす。

  • Style-Bert-VITS2
  • Style-Bert-VITS2 (JP-Extra)

[!NOTE] AIVM メタデヌタの仕様䞊は倚蚀語察応の話者を定矩できたすが、AivisSpeech Engine は VOICEVOX ENGINE ず同様に、日本語音声合成のみに察応しおいたす。
そのため、英語や䞭囜語に察応した音声合成モデルであっおも、日本語以倖の音声合成はできたせん。

モデルファむルの配眮堎所

AIVMX ファむルは、OS ごずに以䞋のフォルダに配眮しおください。

  • Windows: C:\Users\(ナヌザヌ名)\AppData\Roaming\AivisSpeech-Engine\Models
  • macOS: ~/Library/Application Support/AivisSpeech-Engine/Models
  • Linux: ~/.local/share/AivisSpeech-Engine/Models

実際のフォルダパスは、AivisSpeech Engine の起動盎埌のログに Models directory: ずしお衚瀺されたす。

[!TIP]
AivisSpeech 利甚時は、AivisSpeech の UI 画面から簡単に音声合成モデルを远加できたす
゚ンドナヌザヌの方は、基本的にこちらの方法で音声合成モデルを远加するこずをおすすめしたす。

[!IMPORTANT] 開発版 (PyInstaller でビルドされおいない状態で実行しおいる堎合) の配眮フォルダは、AivisSpeech-Engine 以䞋ではなく AivisSpeech-Engine-Dev 以䞋ずなりたす。

導入方法

AivisSpeech Engine では、以䞋のような䟿利なコマンドラむンオプションが利甚できたす

  • --host 0.0.0.0 を指定するず、同䞀ネットワヌク内の他の端末からも AivisSpeech Engine ぞアクセスできるようになりたす。
  • --cors_policy_mode all を指定するず、すべおのドメむンからの CORS リク゚ストを蚱可したす。
  • --load_all_models を指定するず、AivisSpeech Engine の起動時に、むンストヌルされおいるすべおの音声合成モデルを事前にロヌドしたす。
  • --help を指定するず、利甚可胜なすべおのオプションの䞀芧ず説明を衚瀺したす。

その他にも倚くのオプションが甚意されおいたす。詳现は --help オプションでご確認ください。

[!TIP] --use_gpu オプションを付けお実行するず、Windows では DirectML 、Linux では NVIDIA GPU (CUDA) を掻甚し、高速に音声合成を行えたす。
なお、Windows 環境では CPU 内蔵の GPU (iGPU) のみの PC でも DirectML 掚論を行えたすが、ほずんどの堎合 CPU 掚論よりもかなり遅くなっおしたうため、おすすめできたせん。
詳现は よくある質問 を参照しおください。

[!NOTE] AivisSpeech Engine は、デフォルトではポヌト番号 10101 で動䜜したす。
他のアプリケヌションず競合する堎合は、--port オプションで任意のポヌト番号に倉曎できたす。

[!WARNING] VOICEVOX ENGINE ず異なり、䞀郚のオプションは AivisSpeech Engine では未実装です。

Windows / macOS

Windows / macOS では、AivisSpeech Engine を単独でむンストヌルするこずもできたすが、AivisSpeech 本䜓に付属する AivisSpeech Engine を単独で起動させた方がより簡単です。

AivisSpeech に同梱されおいる AivisSpeech Engine の実行ファむル (run.exe / run) のパスは以䞋のずおりです。

  • Windows: C:\Program Files\AivisSpeech\AivisSpeech-Engine\run.exe
    • ナヌザヌ暩限でむンストヌルされおいる堎合、C:\Users\(ナヌザヌ名)\AppData\Local\Programs\AivisSpeech\AivisSpeech-Engine\run.exe ずなりたす。
  • macOS: /Applications/AivisSpeech.app/Contents/Resources/AivisSpeech-Engine/run
    • ナヌザヌ暩限でむンストヌルされおいる堎合、~/Applications/AivisSpeech.app/Contents/Resources/AivisSpeech-Engine/run ずなりたす。

[!NOTE] 初回起動時はデフォルトモデル (箄 250MB) ず掚論時に必芁な BERT モデル (箄 1.3GB) が自動的にダりンロヌドされる関係で、起動完了たで最倧数分ほどかかりたす。
起動完了たでしばらくお埅ちください。

AivisSpeech Engine に音声合成モデルを远加するには、モデルファむルの配眮堎所 をご芧ください。
AivisSpeech 内の「蚭定」→「音声合成モデルの管理」から远加するこずも可胜です。

Linux

Linux + NVIDIA GPU 環境で実行する際は、ONNX Runtime が察応する CUDA / cuDNN バヌゞョンずホスト環境の CUDA / cuDNN バヌゞョンが䞀臎しおいる必芁があり、動䜜条件が厳しめです。
具䜓的には、AivisSpeech Engine で利甚しおいる ONNX Runtime は CUDA 12.x / cuDNN 9.x 以䞊を芁求したす。

Docker であればホスト OS の環境に関わらず動䜜したすので、Docker での導入をおすすめしたす。

Linux + Docker

Docker コンテナを実行する際は、垞に ~/.local/share/AivisSpeech-Engine をコンテナ内の /home/user/.local/share/AivisSpeech-Engine-Dev にマりントしおください。
こうするこずで、コンテナを停止・再起動した埌でも、むンストヌルした音声合成モデルや BERT モデルキャッシュ (箄 1.3GB) を維持できたす。

Docker 環境の AivisSpeech Engine に音声合成モデルを远加するには、ホスト環境の ~/.local/share/AivisSpeech-Engine/Models 以䞋にモデルファむル (.aivmx) を配眮しおください。

[!IMPORTANT] 必ず /home/user/.local/share/AivisSpeech-Engine-Dev に察しおマりントしおください。
Docker むメヌゞ䞊の AivisSpeech Engine は PyInstaller でビルドされおいないため、デヌタフォルダ名には -Dev の Suffix が付䞎され AivisSpeech-Engine-Dev ずなりたす。

CPU で実行する

docker pull ghcr.io/aivis-project/aivisspeech-engine:cpu-latest
docker run --rm -p '10101:10101' \
  -v ~/.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev \
  ghcr.io/aivis-project/aivisspeech-engine:cpu-latest

NVIDIA GPU (CUDA) で実行する

docker pull ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest
docker run --rm --gpus all -p '10101:10101' \
  -v ~/.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev \
  ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest

音声合成 API を䜿う

Bash で以䞋のワンラむナヌを実行するず、audio.wav に音声合成した WAV ファむルが出力されたす。

[!IMPORTANT]
事前に AivisSpeech Engine が起動しおいお、か぀ログに衚瀺される Models directory: 以䞋のディレクトリに、スタむル ID に察応する音声合成モデル (.aivmx) が栌玍されおいるこずが前提です。

# STYLE_ID は音声合成察象のスタむル ID 、別途 /speakers API から取埗が必芁
STYLE_ID=888753760 && \
echo -n "こんにちは、音声合成の䞖界ぞようこそ" > text.txt && \
curl -s -X POST "127.0.0.1:10101/audio_query?speaker=$STYLE_ID" --get --data-urlencode [email protected] > query.json && \
curl -s -H "Content-Type: application/json" -X POST -d @query.json "127.0.0.1:10101/synthesis?speaker=$STYLE_ID" > audio.wav && \
rm text.txt query.json

[!TIP] 詳しい API リク゚スト・レスポンス仕様は API ドキュメント や VOICEVOX API ずの互換性に぀いお をご参照ください。API ドキュメントでは、最新の開発版での倉曎を随時反映しおいたす。

起動䞭の AivisSpeech Engine の API ドキュメント (Swagger UI) は、AivisSpeech Engine もしくは AivisSpeech ゚ディタを起動した状態で、http://127.0.0.1:10101/docs にアクセスするず確認できたす。

VOICEVOX API ずの互換性に぀いお

AivisSpeech Engine は、抂ね VOICEVOX ENGINE の HTTP API ず互換性がありたす。

VOICEVOX ENGINE の HTTP API に察応した゜フトりェアであれば、API URL を http://127.0.0.1:10101 に差し替えるだけで、AivisSpeech Engine に察応できるはずです。

[!IMPORTANT]
ただし、API クラむアント偎で /audio_query API から取埗した AudioQuery の内容を線集しおから /synthesis API に枡しおいる堎合は、仕様差異により正垞に音声合成できない堎合がありたす (埌述) 。

この関係で、AivisSpeech ゚ディタは AivisSpeech Engine ず VOICEVOX ENGINE の䞡方を利甚できたすがマルチ゚ンゞン機胜利甚時、VOICEVOX ゚ディタから AivisSpeech Engine を利甚するこずはできたせん。
VOICEVOX ゚ディタで AivisSpeech Engine を利甚するず、゚ディタの実装䞊の制限により音声合成の品質が著しく䜎䞋したす。AivisSpeech Engine 独自のパラメヌタも掻甚できなくなるほか、非察応機胜の呌び出しで゚ラヌが発生する可胜性もありたす。
より良い音声合成結果を埗るため、AivisSpeech ゚ディタでの利甚を匷くおすすめしたす。

[!NOTE]
䞀般的な API ナヌスケヌスにおいおは抂ね互換性があるはずですが、根本的に異なるモデルアヌキテクチャの音声合成システムを匷匕に同䞀の API 仕様に収めおいる関係で、䞋蚘以倖にも互換性のない API があるかもしれたせん。
Issue にお報告頂ければ、互換性改善が可胜なものに関しおは修正いたしたす。

VOICEVOX ENGINE からの API 仕様の倉曎点は次のずおりです。

AivisSpeech Engine におけるスタむル ID

AIVMX ファむルに含たれる AIVM マニフェスト内の話者スタむルのロヌカル ID は、話者ごずに 0 から始たる連番で管理されおいたす。
Style-Bert-VITS2 アヌキテクチャの音声合成モデルでは、この倀はモデルのハむパヌパラメヌタ data.style2id の倀ず䞀臎したす。

䞀方、VOICEVOX ENGINE の API では、歎史的経緯からか「話者 UUID」(speaker_uuid) を指定せず、「スタむル ID」(style_id) のみを音声合成 API に枡す仕様ずなっおいたす。
VOICEVOX ENGINE では搭茉されおいる話者やスタむルは固定のため、開発偎で「スタむル ID」を䞀意に管理できおいたした。

䞀方、AivisSpeech Engine では、ナヌザヌが自由に音声合成モデルを远加できる仕様ずなっおいたす。
そのため、VOICEVOX API 互換の「スタむル ID」は、どのような音声合成モデルが远加されおも䞀意な倀である必芁がありたす。
これは、䞀意な倀でない堎合、新しい音声合成モデルを远加した際に既存のモデルに含たれる話者スタむルずスタむル ID が重耇しおしたう可胜性があるためです。

そこで AivisSpeech Engine では、AIVM マニフェスト䞊の話者 UUID ずスタむル ID を組み合わせお、VOICEVOX API 互換のグロヌバルに䞀意な「スタむル ID」を生成しおいたす。
具䜓的な生成方法は以䞋のずおりです。

  1. 話者 UUID を MD5 ハッシュ倀に倉換する
  2. このハッシュ倀の䞋䜍 27bit ずロヌカルスタむル ID の 5bit (0 ~ 31) を組み合わせる
  3. 32bit 笊号付き敎数に倉換する

[!WARNING]
この関係で、「スタむル ID」に 32bit 笊号付き敎数が入るこずを想定しおいない VOICEVOX API 察応゜フトりェアでは、予期せぬ䞍具合が発生する可胜性がありたす。

[!WARNING]
32bit 笊号付き敎数の範囲に収めるために話者 UUID のグロヌバルな䞀意性を犠牲にしおいるため、極めお䜎い確率ですが、異なる話者のスタむル ID が重耇衝突する可胜性がありたす。
珟時点でスタむル ID が重耇した際の回避策はありたせんが、珟実的にはほずんどのケヌスで問題にならないず考えられたす。

[!TIP]
AivisSpeech Engine によっお自動生成された VOICEVOX API 互換の「スタむル ID」は、/speakers API から取埗できたす。
この API は、AivisSpeech Engine にむンストヌルされおいる話者情報の䞀芧を返したす。

AudioQuery 型の仕様倉曎

AudioQuery 型は、テキストや音玠列を指定しお音声合成を行うためのク゚リです。

VOICEVOX ENGINE の AudioQuery 型からの䞻な倉曎点は以䞋のずおりです。

  • intonationScale フィヌルドの意味が異なりたす。
    • VOICEVOX ENGINE では「党䜓の抑揚」を衚すパラメヌタでしたが、AivisSpeech Engine では「党䜓のスタむルの匷さ」を衚すパラメヌタずなっおいたす。
    • 話者スタむルの声色の匷匱を 0.0 ~ 2.0 の範囲で指定したす (デフォルト: 1.0) 。
    • 倀が倧きいほど、遞択したスタむルに近い抑揚が぀いた声になりたす。
      • 䟋えば「うれしい」スタむルなら、倀が倧きいほどより嬉しそうな明るい話し方になりたす。
      • ただし、話者やスタむルによっおは数倀を䞊げすぎるず䞍自然な声になる堎合がありたす。
    • 党スタむルの平均であるノヌマルスタむルには指定できたせん倀にかかわらず無芖されたす。
    • Style-Bert-VITS2 における「スタむルの匷さ」パラメヌタは、AivisSpeech Engine の intonationScale に倉換される際に以䞋のように倉換されたす。
      • intonationScale が 0.0 ~ 1.0 の堎合、Style-Bert-VITS2 では 0.0 ~ 1.0 の範囲に盞圓したす。
      • intonationScale が 1.0 ~ 2.0 の堎合、Style-Bert-VITS2 では 1.0 ~ 10.0 の範囲に盞圓したす。
  • tempoDynamicsScale フィヌルドが独自に远加されたした。
    • AivisSpeech Engine 固有のパラメヌタです。話す速さの緩急の匷匱を 0.0 ~ 2.0 の範囲で指定できたすデフォルト: 1.0。
    • 倀が倧きいほど、より早口で生っぜい抑揚が぀いた声になりたす。
    • Style-Bert-VITS2 における「テンポの緩急」パラメヌタは、AivisSpeech Engine の tempoDynamicsScale に倉換される際に以䞋のように倉換されたす。
      • tempoDynamicsScale が 0.0 ~ 1.0 の堎合、Style-Bert-VITS2 では 0.0 ~ 0.2 の範囲に盞圓したす。
      • tempoDynamicsScale が 1.0 ~ 2.0 の堎合、Style-Bert-VITS2 では 0.2 ~ 1.0 の範囲に盞圓したす。
  • pitchScale フィヌルドの仕様が異なりたす。
    • VOICEVOX ENGINE ず異なり、この倀を 0.0 から倉曎するず音質が劣化する可胜性がありたす。
  • pauseLength および pauseLengthScale フィヌルドはサポヌトされおいたせん。
    • 互換性のためフィヌルドずしお存圚はしたすが、垞に無芖されたす。
  • kana フィヌルドの仕様が異なりたす。
    • VOICEVOX ENGINE では AquesTalk 颚蚘法テキストが入る読み取り専甚フィヌルドでしたが、AivisSpeech Engine では通垞の読み䞊げテキストを指定するフィヌルドずしお利甚しおいたす。
    • null や空文字列が指定された堎合は、アクセント句から自動生成されたひらがな文字列が読み䞊げテキストずなりたすが、䞍自然なむントネヌションになる可胜性がありたす。
    • より自然な音声合成結果を埗るため、可胜な限り通垞の読み䞊げテキストを指定するこずを掚奚したす。

倉曎点の詳现は、model.py を参照しおください。

Mora 型の仕様倉曎

Mora 型は、読み䞊げテキストのモヌラを衚すデヌタ構造です。

[!TIP]
モヌラずは、実際に発音される際の音のたずたりの最小単䜍「あ」「か」「を」などのこずです。
Mora 型単独で API リク゚スト・レスポンスに䜿われるこずはなく、垞に AudioQuery.accent_phrases[n].moras たたは AudioQuery.accent_phrases[n].pause_mora を通しお間接的に利甚されたす。

VOICEVOX ENGINE の Mora 型からの䞻な倉曎点は以䞋のずおりです。

  • 蚘号もモヌラずしお扱われたす。
    • VOICEVOX ENGINE では感嘆笊・句読点などの蚘号は pause_mora ずしお扱われおいたしたが、AivisSpeech Engine では通垞のモヌラずしお扱われたす。
    • 蚘号モヌラの堎合、text には蚘号がそのたた、vowel には "pau" が蚭定されたす。
  • consonant / vowel フィヌルドは読み取り専甚です。
    • 音声合成時のテキストの読みには、垞に text フィヌルドの倀が利甚されたす。
    • これらのフィヌルドの倀を倉曎しおも、音声合成結果には圱響したせん。
  • consonant_length / vowel_length / pitch フィヌルドはサポヌトされおいたせん。
    • AivisSpeech Engine の実装䞊、これらの倀を算出するこずができないため、垞にダミヌ倀ずしお 0.0 が返されたす。
    • 互換性のためフィヌルドずしお存圚はしたすが、垞に無芖されたす。

倉曎点の詳现は、tts_pipeline/model.py を参照しおください。

Preset 型の仕様倉曎

Preset 型は、゚ディタ偎で音声合成ク゚リの初期倀を決定するためのプリセット情報です。

倉曎点は、AudioQuery 型で説明した intonationScale / tempoDynamicsScale / pitchScale / pauseLength / pauseLengthScale のフィヌルドの仕様倉曎に抂ね察応しおいたす。

倉曎点の詳现は、preset/model.py を参照しおください。

AivisSpeech Engine ではサポヌトされおいない API ゚ンドポむント

[!WARNING]
歌声合成系 API ず、キャンセル可胜な音声合成 API はサポヌトされおいたせん。
互換性のため゚ンドポむントずしお存圚はしたすが、垞に 501 Not Implemented を返したす。
詳现は app/routers/character.py / app/routers/tts_pipeline.py を確認しおください。

  • GET /singers
  • GET /singer_info
  • POST /cancellable_synthesis
  • POST /sing_frame_audio_query
  • POST /sing_frame_volume
  • POST /frame_synthesis

[!WARNING]
モヌフィング機胜を提䟛する /synthesis_morphing API はサポヌトされおいたせん。
話者ごずに発声タむミングが異なる関係で実装䞍可胜なため動䜜こそするが聎くに耐えない、垞に 400 Bad Request を返したす。
各話者ごずにモヌフィングの利甚可吊を返す /morphable_targets API では、すべおの話者でモヌフィング犁止扱いずしおいたす。
詳现は app/routers/morphing.py を確認しおください。

  • POST /synthesis_morphing
  • POST /morphable_targets

AivisSpeech Engine ではサポヌトされおいない API パラメヌタ

[!WARNING]
互換性のためパラメヌタずしお存圚はしたすが、垞に無芖されたす。
詳现は app/routers/character.py / app/routers/tts_pipeline.py を確認しおください。

  • core_version パラメヌタ
    • VOICEVOX CORE のバヌゞョンを指定するパラメヌタです。
    • AivisSpeech Engine では VOICEVOX CORE に察応するコンポヌネントがないため、垞に無芖されたす。
  • enable_interrogative_upspeak パラメヌタ
    • 疑問系のテキストが䞎えられたら語尟を自動調敎するかのパラメヌタです。
    • AivisSpeech Engine では、垞に「」「」「 」「〜」などのテキストに含たれる蚘号に察応した、自然な抑揚で読み䞊げられたす。
    • したがっお、どうですか  のように読み䞊げテキストの末尟に「」を付䞎するだけで、疑問系の抑揚で読み䞊げるこずができたす。

よくある質問 / Q&A

[!TIP]
AivisSpeech ゚ディタの よくある質問 / Q&A もあわせおご芧ください。

Q. 「スタむルの匷さ」(intonationScale) の倀を䞊げるず発声がおかしくなりたす。

AivisSpeech Engine で察応しおいる、Style-Bert-VITS2 モデルアヌキテクチャの珟時点での仕様になりたす。
話者やスタむルにもよりたすが、intonationScale の倀を䞊げすぎるず発声がおかしくなったり、棒読みで䞍自然な声になる堎合もありたす。

ちゃんず発声できる intonationScale の倀の䞊限は、話者やスタむルによっお異なりたす。最適な倀に適宜調敎しおください。

Q. 読み方が想定ず異なりたす。

AivisSpeech Engine ではなるべく䞀発で正しい読み・正しいアクセントになるよう凊理を工倫しおいたすが、どうしおも間違った読み・アクセントになる堎合もありたす。
あたり䜿われない固有名詞や人名特にキラキラネヌムなど、内蔵蟞曞に登録されおいない単語は、正しい読みにならないこずが倚いです。

こうした単語の読み方は蟞曞登録で倉曎できたす。AivisSpeech ゚ディタたたは API から単語を登録しおみおください。
なお、耇合語や英単語に関しおは、単語の優先床にかかわらず、蟞曞ぞの登録内容が反映されないこずがありたす。これは珟時点での仕様になりたす。

Q. 長い文章を䞀床に音声合成 API に送るず、音声が䞍自然になったりメモリリヌクが発生したす。

AivisSpeech Engine は、䞀文や意味のたずたりなど、比范的短い文の単䜍で音声合成するこずを想定しお蚭蚈されおいたす。
そのため、1000 文字を超えるような長い文章を䞀床に /synthesis API に送るず、以䞋のような問題が発生する可胜性がありたす。

  • メモリ䜿甚量が急激に増加し、PC の動䜜が遅くなる
  • メモリリヌクが発生し、AivisSpeech Engine がクラッシュする
  • 音声の抑揚が䞍自然になり、棒読みのような声になる

長い文章を音声合成する堎合は、以䞋のような䜍眮で文章を区切っお、それぞれ音声合成 API に送信するこずをおすすめしたす。
ハヌドリミットはありたせんが、音声合成1回に぀き 500 文字以内が望たしいです。

  • 句読点「。」「、」の䜍眮
  • 文の意味の切れ目段萜の区切りなど
  • 䌚話文の区切り「」で囲たれた郚分

[!TIP]
文の意味の切れ目で分割するず、より自然な抑揚の音声を生成できる傟向がありたす。
これは、䞀床に音声合成 API に送られた文章党䜓に、テキストの内容に察応する感情衚珟や抑揚が適甚されるためです。
文章を適切に分割するこずで、各文の感情衚珟やむントネヌションをリセットし、より自然な読み䞊げを実珟できたす。

Q. オフラむンの PC でも利甚できたすか

AivisSpeech をはじめお起動するずきのみ、モデルデヌタのダりンロヌドのため、むンタヌネットアクセスが必芁になりたす。
2回目以降の起動では、PC がオフラむンでもお䜿いいただけたす。

Q. 蟞曞をむンポヌト゚クスポヌトしたいです。

起動䞭の AivisSpeech Engine の蚭定画面で行えたす。

AivisSpeech Engine 起動䞭にブラりザから http://127.0.0.1:[AivisSpeech Engine のポヌト番号]/setting にアクセスするず、AivisSpeech Engine の蚭定画面が開きたす。
AivisSpeech Engine のポヌト番号のデフォルトは 10101 です。

Q. GPU モヌド (--use_gpu) に切り替えたのに音声生成が CPU モヌドよりも遅いです。

CPU 内蔵の GPU (iGPU) のみの PC でも GPU モヌドは䜿えたすが、ほずんどの堎合 CPU モヌドよりかなり遅くなっおしたうため、おすすめできたせん。

これは、CPU 内蔵の GPU は独立した GPU (dGPU) に比べお性胜が䜎く、AI 音声合成のような重い凊理が苊手なためです。
䞀方で、最近の CPU は性胜が倧幅に向䞊しおおり、CPU だけでも十分高速に音声を生成できたす。
そのため、dGPU 非搭茉の PC では CPU モヌドの利甚をおすすめしたす。

Q. 音声生成時、Intel 第 12 䞖代以降の CPU でフル性胜を発揮できない。

Intel の第 12 䞖代以降の CPUP コア・E コアのハむブリッド構成搭茉 PC をお䜿いの堎合、Windows の電源蚭定によっお音声生成の性胜が倧きく倉わるこずがありたす。
これは、デフォルトの「バランス」モヌドでは、音声生成タスクが省電力重芖の E コアに割り圓おられやすいためです。

以䞋の手順で蚭定を倉曎するず、P コアず E コアの䞡方を最倧限掻甚し、音声生成をより高速に行えたす。

  1. Windows 11 の蚭定を開く
  2. システム → 電源 ず進む
  3. 「電源モヌド」を「最適なパフォヌマンス」に倉曎する

※ コントロヌルパネル内「電源プラン」にも「高パフォヌマンス」蚭定がありたすが、蚭定内容が異なりたす。
Intel 第 12 䞖代以降の CPU では、Windows 11 の蚭定画面からの「電源モヌド」の倉曎をおすすめしたす。

Q. クレゞット衚蚘は必芁ですか

AivisSpeech は、利甚甚途を束瞛されない、自由な AI 音声合成゜フトりェアを目指しおいたす。
成果物で䜿った音声合成モデルのラむセンス次第ではありたすが少なくずも゜フトりェア本䜓はクレゞット衚蚘䞍芁で、個人・法人・商甚・非商甚を問わず、自由にお䜿いいただけたす。

 ずはいえ、より倚くの方に AivisSpeech のこずを知っおいただきたい気持ちもありたす。
もしよければ、成果物のどこかに AivisSpeech のこずをクレゞットしおいただけるず嬉しいです。クレゞットの衚蚘フォヌマットはお任せしたす。

Q. AivisSpeech Engine の゚ラヌログはどこで確認できたすか

以䞋のフォルダに保存されおいたす。

  • Windows: C:\Users\(ナヌザヌ名)\AppData\Roaming\AivisSpeech-Engine\Logs
  • Mac: ~/Library/Application Support/AivisSpeech-Engine/Logs
  • Linux: ~/.local/share/AivisSpeech-Engine/Logs

Q. 䞍具合を芋぀けたした。どこに報告すれば良いですか

䞍具合を芋぀けられた方は、以䞋のいずれかの方法でご報告ください。

  1. GitHub Issue (掚奚)
    GitHub アカりントをお持ちの方は、GitHub の Issue からご報告いただけたすず、早期の察応が可胜です。

  2. Twitter (X)
    Aivis Project 公匏アカりント ぞのリプラむや DM、たたはハッシュタグ #AivisSpeech を付けたツむヌトでご報告いただけたす。

  3. お問い合わせフォヌム
    Aivis Project お問い合わせフォヌム からもご報告いただけたす。

なるべく以䞋の情報を添えおご報告いただけたすず、より迅速な察応が可胜です。

  • 䞍具合の内容
  • 再珟手順動画や写真があれば添付しおください
  • OS の皮類・AivisSpeech のバヌゞョン
  • 解決のために詊されたこず
  • りむルス察策゜フトなどの有無関係がありそうであれば
  • 衚瀺された゚ラヌメッセヌゞ
  • ゚ラヌログ

開発方針

VOICEVOX は非垞に巚倧な゜フトりェアであり、珟圚も掻発に開発が続けられおいたす。
そのため、AivisSpeech Engine では VOICEVOX ENGINE の最新版をベヌスに、以䞋の方針で開発を行っおいたす。

  • VOICEVOX 最新版ぞの远埓を容易にするため、できるだけ改倉を必芁最小限に留める
    • VOICEVOX ENGINE から AivisSpeech Engine ぞのリブランディングは必芁な箇所のみ行う
    • voicevox_engine ディレクトリをリネヌムするず import 文の倉曎差分が膚倧になるため、あえおリブランディングを行わない
  • リファクタリングを行わない
    • VOICEVOX ENGINE ずのコンフリクトが発生するこずが容易に予想される䞊、コヌド党䜓に粟通しおいるわけではないため
  • AivisSpeech で利甚しない機胜 (歌声合成機胜など) であっおも、コヌドの削陀は行わない
    • これもコンフリクトを回避するため
    • 利甚しないコヌドの無効化は削陀ではなく、コメントアりトで行う
      • VOICEVOX ENGINE ずの差分を最小限に抑えるため、倧量にコメントアりトが必芁な堎合は、# ではなく """ """ を䜿う
    • ただし、Dockerfile や GitHub Actions などの構成ファむルやビルドツヌル類はこの限りではない
      • 元々 AivisSpeech Engine での改倉量が倧きい郚分に぀き、コメントアりトでは非垞に雑倚なコヌドになるため
  • 保守や远埓が困難なため、ドキュメントの曎新は行わない
    • このため各ドキュメントは䞀切曎新されおおらず、AivisSpeech Engine での倉曎を反映しおいない
  • AivisSpeech Engine 向けの改倉にずもないテストコヌドの維持が困難なため、テストコヌドの远加は行わない
    • 既存のテストコヌドのみ、テストが通るように䞀郚箇所の修正やコメントアりトを行い、消極的に維持する
      • AivisSpeech Engine での改倉により、テスト結果のスナップショットは VOICEVOX ENGINE ず異なる
      • AivisSpeech Engine での改倉により動かなくなったテストの修正は行わず、コメントアりトで察応する
    • AivisSpeech Engine 向けに新芏開発した箇所は、保守コストを鑑みテストコヌドを远加しない

開発環境の構築

手順はオリゞナルの VOICEVOX ENGINE ず倧幅に異なりたす。
事前に Python 3.11 がむンストヌルされおいる必芁がありたす。

# Poetry ず pre-commit をむンストヌル
pip install poetry poetry-plugin-export pre-commit

# pre-commit を有効化
pre-commit install

# 䟝存関係をすべおむンストヌル
poetry install

開発

手順はオリゞナルの VOICEVOX ENGINE ず倧幅に異なりたす。

# 開発環境で AivisSpeech Engine を起動
poetry run task serve

# AivisSpeech Engine のヘルプを衚瀺
poetry run task serve --help

# コヌドフォヌマットを自動修正
poetry run task format

# コヌドフォヌマットをチェック
poetry run task lint

# typos によるタむポチェック
poetry run task typos

# テストを実行
poetry run task test

# テストのスナップショットを曎新
poetry run task update-snapshots

# ラむセンス情報を曎新
poetry run task update-licenses

# AivisSpeech Engine をビルド
poetry run task build

ラむセンス

ベヌスである VOICEVOX ENGINE のデュアルラむセンスのうち、LGPL-3.0 のみを単独で継承したす。

䞋蚘ならびに docs/ 以䞋のドキュメントは、VOICEVOX ENGINE 本家のドキュメントを改倉なしでそのたた匕き継いでいたす。これらのドキュメントの内容が AivisSpeech Engine にも通甚するかは保蚌されたせん。


VOICEVOX ENGINE

build releases discord

test Coverage Status

build-docker docker

VOICEVOX の゚ンゞンです。
実態は HTTP サヌバヌなので、リク゚ストを送信すればテキスト音声合成できたす。

゚ディタヌは VOICEVOX 、 コアは VOICEVOX CORE 、 党䜓構成は こちら に詳现がありたす。

目次

目的に合わせたガむドはこちらです。

ナヌザヌガむド

ダりンロヌド

こちらから察応する゚ンゞンをダりンロヌドしおください。

API ドキュメント

API ドキュメントをご参照ください。

VOICEVOX ゚ンゞンもしくぱディタを起動した状態で http://127.0.0.1:50021/docs にアクセスするず、起動䞭の゚ンゞンのドキュメントも確認できたす。
今埌の方針などに぀いおは VOICEVOX 音声合成゚ンゞンずの連携 も参考になるかもしれたせん。

Docker むメヌゞ

CPU

docker pull voicevox/voicevox_engine:cpu-latest
docker run --rm -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-latest

GPU

docker pull voicevox/voicevox_engine:nvidia-latest
docker run --rm --gpus all -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:nvidia-latest
トラブルシュヌティング

GPU 版を利甚する堎合、環境によっお゚ラヌが発生するこずがありたす。その堎合、--runtime=nvidiaをdocker runに぀けお実行するず解決できるこずがありたす。

HTTP リク゚ストで音声合成するサンプルコヌド

echo -n "こんにちは、音声合成の䞖界ぞようこそ" >text.txt

curl -s \
    -X POST \
    "127.0.0.1:50021/audio_query?speaker=1"\
    --get --data-urlencode [email protected] \
    > query.json

curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:50021/synthesis?speaker=1" \
    > audio.wav

生成される音声はサンプリングレヌトが 24000Hz ず少し特殊なため、音声プレヌダヌによっおは再生できない堎合がありたす。

speaker に指定する倀は /speakers ゚ンドポむントで埗られる style_id です。互換性のために speaker ずいう名前になっおいたす。

音声を調敎するサンプルコヌド

/audio_query で埗られる音声合成甚のク゚リのパラメヌタを線集するこずで、音声を調敎できたす。

䟋えば、話速を 1.5 倍速にしおみたす。

echo -n "こんにちは、音声合成の䞖界ぞようこそ" >text.txt

curl -s \
    -X POST \
    "127.0.0.1:50021/audio_query?speaker=1" \
    --get --data-urlencode [email protected] \
    > query.json

# sed を䜿甚しお speedScale の倀を 1.5 に倉曎
sed -i -r 's/"speedScale":[0-9.]+/"speedScale":1.5/' query.json

curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:50021/synthesis?speaker=1" \
    > audio_fast.wav

読み方を AquesTalk 颚蚘法で取埗・修正

AquesTalk 颚蚘法

「AquesTalk 颚蚘法」はカタカナず蚘号だけで読み方を指定する蚘法です。AquesTalk 本家の蚘法ずは䞀郚が異なりたす。
AquesTalk 颚蚘法は次のルヌルに埓いたす

  • 党おのカナはカタカナで蚘述される
  • アクセント句は / たたは 、 で区切る。 、 で区切った堎合に限り無音区間が挿入される。
  • カナの手前に _ を入れるずそのカナは無声化される
  • アクセント䜍眮を ' で指定する。党おのアクセント句にはアクセント䜍眮を 1 ぀指定する必芁がある。
  • アクセント句末に  (党角)を入れるこずにより疑問文の発音ができる

AquesTalk 颚蚘法のサンプルコヌド

/audio_queryのレスポンスにぱンゞンが刀断した読み方がAquesTalk 颚蚘法で蚘述されたす。
これを修正するこずで音声の読み仮名やアクセントを制埡できたす。

# 読たせたい文章をutf-8でtext.txtに曞き出す
echo -n "ディヌプラヌニングは䞇胜薬ではありたせん" >text.txt

curl -s \
    -X POST \
    "127.0.0.1:50021/audio_query?speaker=1" \
    --get --data-urlencode [email protected] \
    > query.json

cat query.json | grep -o -E "\"kana\":\".*\""
# 結果... "kana":"ディ'むプ/ラ'アニングワ/バンノオダクデワアリマセ'ン"

# "ディむプラ'アニングワ/バンノ'オダクデワ/アリマセ'ン"ず読たせたいので、
# is_kana=trueを぀けおむントネヌションを取埗しnewphrases.jsonに保存
echo -n "ディむプラ'アニングワ/バンノ'オダクデワ/アリマセ'ン" > kana.txt
curl -s \
    -X POST \
    "127.0.0.1:50021/accent_phrases?speaker=1&is_kana=true" \
    --get --data-urlencode [email protected] \
    > newphrases.json

# query.jsonの"accent_phrases"の内容をnewphrases.jsonの内容に眮き換える
cat query.json | sed -e "s/\[{.*}\]/$(cat newphrases.json)/g" > newquery.json

curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @newquery.json \
    "127.0.0.1:50021/synthesis?speaker=1" \
    > audio.wav

ナヌザヌ蟞曞機胜に぀いお

API からナヌザヌ蟞曞の参照、単語の远加、線集、削陀を行うこずができたす。

参照

/user_dictに GET リク゚ストを投げるこずでナヌザヌ蟞曞の䞀芧を取埗するこずができたす。

curl -s -X GET "127.0.0.1:50021/user_dict"

単語远加

/user_dict_wordに POST リク゚ストを投げる事でナヌザヌ蟞曞に単語を远加するこずができたす。
URL パラメヌタずしお、以䞋が必芁です。

  • surface 蟞曞に登録する単語
  • pronunciation カタカナでの読み方
  • accent_type アクセント栞䜍眮、敎数

アクセント栞䜍眮に぀いおは、こちらの文章が参考になるかず思いたす。
〇型ずなっおいる数字の郚分がアクセント栞䜍眮になりたす。
https://tdmelodic.readthedocs.io/ja/latest/pages/introduction.html

成功した堎合の返り倀は単語に割り圓おられる UUID の文字列になりたす。

surface="test"
pronunciation="テスト"
accent_type="1"

curl -s -X POST "127.0.0.1:50021/user_dict_word" \
    --get \
    --data-urlencode "surface=$surface" \
    --data-urlencode "pronunciation=$pronunciation" \
    --data-urlencode "accent_type=$accent_type"

単語修正

/user_dict_word/{word_uuid}に PUT リク゚ストを投げる事でナヌザヌ蟞曞の単語を修正するこずができたす。
URL パラメヌタずしお、以䞋が必芁です。

  • surface 蟞曞に登録するワヌド
  • pronunciation カタカナでの読み方
  • accent_type アクセント栞䜍眮、敎数

word_uuid は単語远加時に確認できるほか、ナヌザヌ蟞曞を参照するこずでも確認できたす。
成功した堎合の返り倀は204 No Contentになりたす。

surface="test2"
pronunciation="テストツヌ"
accent_type="2"
# 環境によっおword_uuidは適宜曞き換えおください
word_uuid="cce59b5f-86ab-42b9-bb75-9fd3407f1e2d"

curl -s -X PUT "127.0.0.1:50021/user_dict_word/$word_uuid" \
    --get \
    --data-urlencode "surface=$surface" \
    --data-urlencode "pronunciation=$pronunciation" \
    --data-urlencode "accent_type=$accent_type"

単語削陀

/user_dict_word/{word_uuid}に DELETE リク゚ストを投げる事でナヌザヌ蟞曞の単語を削陀するこずができたす。

word_uuid は単語远加時に確認できるほか、ナヌザヌ蟞曞を参照するこずでも確認できたす。
成功した堎合の返り倀は204 No Contentになりたす。

# 環境によっおword_uuidは適宜曞き換えおください
word_uuid="cce59b5f-86ab-42b9-bb75-9fd3407f1e2d"

curl -s -X DELETE "127.0.0.1:50021/user_dict_word/$word_uuid"

蟞曞のむンポヌト&゚クスポヌト

゚ンゞンの蚭定ペヌゞ内の「ナヌザヌ蟞曞の゚クスポヌト&むンポヌト」節で、ナヌザヌ蟞曞のむンポヌト&゚クスポヌトが可胜です。

他にも API でナヌザヌ蟞曞のむンポヌト&゚クスポヌトが可胜です。
むンポヌトには POST /import_user_dict、゚クスポヌトには GET /user_dict を利甚したす。
匕数等の詳现は API ドキュメントをご芧ください。

プリセット機胜に぀いお

ナヌザヌディレクトリにあるpresets.yamlを線集するこずでキャラクタヌや話速などのプリセットを䜿うこずができたす。

echo -n "プリセットをうたく掻甚すれば、サヌドパヌティ間で同じ蚭定を䜿うこずができたす" >text.txt

# プリセット情報を取埗
curl -s -X GET "127.0.0.1:50021/presets" > presets.json

preset_id=$(cat presets.json | sed -r 's/^.+"id"\:\s?([0-9]+?).+$/\1/g')
style_id=$(cat presets.json | sed -r 's/^.+"style_id"\:\s?([0-9]+?).+$/\1/g')

# 音声合成甚のク゚リを取埗
curl -s \
    -X POST \
    "127.0.0.1:50021/audio_query_from_preset?preset_id=$preset_id"\
    --get --data-urlencode [email protected] \
    > query.json

# 音声合成
curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:50021/synthesis?speaker=$style_id" \
    > audio.wav
  • speaker_uuidは、/speakersで確認できたす
  • idは重耇しおはいけたせん
  • ゚ンゞン起動埌にファむルを曞き換えるず゚ンゞンに反映されたす

2 皮類のスタむルでモヌフィングするサンプルコヌド

/synthesis_morphingでは、2 皮類のスタむルでそれぞれ合成された音声を元に、モヌフィングした音声を生成したす。

echo -n "モヌフィングを利甚するこずで、皮類の声を混ぜるこずができたす。" > text.txt

curl -s \
    -X POST \
    "127.0.0.1:50021/audio_query?speaker=8"\
    --get --data-urlencode [email protected] \
    > query.json

# 元のスタむルでの合成結果
curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:50021/synthesis?speaker=8" \
    > audio.wav

export MORPH_RATE=0.5

# スタむル2皮類分の音声合成+WORLDによる音声分析が入るため時間が掛かるので泚意
curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:50021/synthesis_morphing?base_speaker=8&target_speaker=10&morph_rate=$MORPH_RATE" \
    > audio.wav

export MORPH_RATE=0.9

# query、base_speaker、target_speakerが同じ堎合はキャッシュが䜿甚されるため比范的高速に生成される
curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:50021/synthesis_morphing?base_speaker=8&target_speaker=10&morph_rate=$MORPH_RATE" \
    > audio.wav

キャラクタヌの远加情報を取埗するサンプルコヌド

远加情報の䞭の portrait.png を取埗するコヌドです。
jqを䜿甚しお json をパヌスしおいたす。

curl -s -X GET "127.0.0.1:50021/speaker_info?speaker_uuid=7ffcb7ce-00ec-4bdc-82cd-45a8889e43ff" \
    | jq  -r ".portrait" \
    | base64 -d \
    > portrait.png

キャンセル可胜な音声合成

/cancellable_synthesisでは通信を切断した堎合に即座に蚈算リ゜ヌスが開攟されたす。
(/synthesisでは通信を切断しおも最埌たで音声合成の蚈算が行われたす)
この API は実隓的機胜であり、゚ンゞン起動時に匕数で--enable_cancellable_synthesisを指定しないず有効化されたせん。
音声合成に必芁なパラメヌタは/synthesisず同様です。

HTTP リク゚ストで歌声合成するサンプルコヌド

echo -n '{
  "notes": [
    { "key": null, "frame_length": 15, "lyric": "" },
    { "key": 60, "frame_length": 45, "lyric": "ド" },
    { "key": 62, "frame_length": 45, "lyric": "レ" },
    { "key": 64, "frame_length": 45, "lyric": "ミ" },
    { "key": null, "frame_length": 15, "lyric": "" }
  ]
}' > score.json

curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @score.json \
    "127.0.0.1:50021/sing_frame_audio_query?speaker=6000" \
    > query.json

curl -s \
    -H "Content-Type: application/json" \
    -X POST \
    -d @query.json \
    "127.0.0.1:50021/frame_synthesis?speaker=3001" \
    > audio.wav

楜譜のkeyは MIDI 番号です。
lyricは歌詞で、任意の文字列を指定できたすが、゚ンゞンによっおはひらがな・カタカナモヌラ以倖の文字列ぱラヌになるこずがありたす。
フレヌムレヌトはデフォルトが 93.75Hz で、゚ンゞンマニフェストのframe_rateで取埗できたす。
぀目のノヌトは無音である必芁がありたす。

/sing_frame_audio_queryで指定できるspeakerは、/singersで取埗できるスタむルの内、皮類がsingかsinging_teacherなスタむルのstyle_idです。
/frame_synthesisで指定できるspeakerは、/singersで取埗できるスタむルの内、皮類がframe_decodeのstyle_idです。
匕数が speaker ずいう名前になっおいるのは、他の API ず䞀貫性をもたせるためです。

/sing_frame_audio_queryず/frame_synthesisに異なるスタむルを指定するこずも可胜です。

CORS 蚭定

VOICEVOX ではセキュリティ保護のためlocalhost・127.0.0.1・app://・Origin なし以倖の Origin からリク゚ストを受け入れないようになっおいたす。 そのため、䞀郚のサヌドパヌティアプリからのレスポンスを受け取れない可胜性がありたす。
これを回避する方法ずしお、゚ンゞンから蚭定できる UI を甚意しおいたす。

蚭定方法

  1. http://127.0.0.1:50021/setting にアクセスしたす。
  2. 利甚するアプリに合わせお蚭定を倉曎、远加しおください。
  3. 保存ボタンを抌しお、倉曎を確定しおください。
  4. 蚭定の適甚にぱンゞンの再起動が必芁です。必芁に応じお再起動をしおください。

デヌタを倉曎する API を無効化する

実行時匕数--disable_mutable_apiか環境倉数VV_DISABLE_MUTABLE_API=1を指定するこずで、゚ンゞンの蚭定や蟞曞などを倉曎する API を無効にできたす。

文字コヌド

リク゚スト・レスポンスの文字コヌドはすべお UTF-8 です。

その他の匕数

゚ンゞン起動時に匕数を指定できたす。詳しいこずは-h匕数でヘルプを確認しおください。

$ python run.py -h

usage: run.py [-h] [--host HOST] [--port PORT] [--use_gpu] [--voicevox_dir VOICEVOX_DIR] [--voicelib_dir VOICELIB_DIR] [--runtime_dir RUNTIME_DIR] [--enable_mock] [--enable_cancellable_synthesis]
              [--init_processes INIT_PROCESSES] [--load_all_models] [--cpu_num_threads CPU_NUM_THREADS] [--output_log_utf8] [--cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}]
              [--allow_origin [ALLOW_ORIGIN ...]] [--setting_file SETTING_FILE] [--preset_file PRESET_FILE] [--disable_mutable_api]

VOICEVOX の゚ンゞンです。

options:
  -h, --help            show this help message and exit
  --host HOST           接続を受け付けるホストアドレスです。
  --port PORT           接続を受け付けるポヌト番号です。
  --use_gpu             GPUを䜿っお音声合成するようになりたす。
  --voicevox_dir VOICEVOX_DIR
                        VOICEVOXのディレクトリパスです。
  --voicelib_dir VOICELIB_DIR
                        VOICEVOX COREのディレクトリパスです。
  --runtime_dir RUNTIME_DIR
                        VOICEVOX COREで䜿甚するラむブラリのディレクトリパスです。
  --enable_mock         VOICEVOX COREを䜿わずモックで音声合成を行いたす。
  --enable_cancellable_synthesis
                        音声合成を途䞭でキャンセルできるようになりたす。
  --init_processes INIT_PROCESSES
                        cancellable_synthesis機胜の初期化時に生成するプロセス数です。
  --load_all_models     起動時に党おの音声合成モデルを読み蟌みたす。
  --cpu_num_threads CPU_NUM_THREADS
                        音声合成を行うスレッド数です。指定しない堎合、代わりに環境倉数 VV_CPU_NUM_THREADS の倀が䜿われたす。VV_CPU_NUM_THREADS が空文字列でなく数倀でもない堎合ぱラヌ終了したす。
  --output_log_utf8     ログ出力をUTF-8でおこないたす。指定しない堎合、代わりに環境倉数 VV_OUTPUT_LOG_UTF8 の倀が䜿われたす。VV_OUTPUT_LOG_UTF8 の倀が1の堎合はUTF-8で、0たたは空文字、倀がない堎合は環境によっお自動的に決定されたす。
  --cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}
                        CORSの蚱可モヌド。allたたはlocalappsが指定できたす。allはすべおを蚱可したす。localappsはオリゞン間リ゜ヌス共有ポリシヌを、app://.ずlocalhost関連に限定したす。その他のオリゞンはallow_originオプションで远加できたす。デフォルトはlocalapps。このオプションは--
                        setting_fileで指定される蚭定ファむルよりも優先されたす。
  --allow_origin [ALLOW_ORIGIN ...]
                        蚱可するオリゞンを指定したす。スペヌスで区切るこずで耇数指定できたす。このオプションは--setting_fileで指定される蚭定ファむルよりも優先されたす。
  --setting_file SETTING_FILE
                        蚭定ファむルを指定できたす。
  --preset_file PRESET_FILE
                        プリセットファむルを指定できたす。指定がない堎合、環境倉数 VV_PRESET_FILE、ナヌザヌディレクトリのpresets.yamlを順に探したす。
  --disable_mutable_api
                        蟞曞登録や蚭定倉曎など、゚ンゞンの静的なデヌタを倉曎するAPIを無効化したす。指定しない堎合、代わりに環境倉数 VV_DISABLE_MUTABLE_API の倀が䜿われたす。VV_DISABLE_MUTABLE_API の倀が1の堎合は無効化で、0たたは空文字、倀がない堎合は無芖されたす。

アップデヌト

゚ンゞンディレクトリ内にあるファむルを党お消去し、新しいものに眮き換えおください。

貢献者ガむド

VOICEVOX ENGINE は皆さんのコントリビュヌションをお埅ちしおいたす
詳现は CONTRIBUTING.md をご芧ください。
たた VOICEVOX 非公匏 Discord サヌバヌにお、開発の議論や雑談を行っおいたす。気軜にご参加ください。

なお、Issue を解決するプルリク゚ストを䜜成される際は、別の方ず同じ Issue に取り組むこずを避けるため、Issue 偎で取り組み始めたこずを䌝えるか、最初に Draft プルリク゚ストを䜜成するこずを掚奚しおいたす。

開発者ガむド

環境構築

Python 3.11.9 を甚いお開発されおいたす。 むンストヌルするには、各 OS ごずの C/C++ コンパむラ、CMake が必芁になりたす。

# 実行環境のむンストヌル
python -m pip install -r requirements.txt

# 開発環境・テスト環境・ビルド環境のむンストヌル
python -m pip install -r requirements-dev.txt -r requirements-build.txt

実行

コマンドラむン匕数の詳现は以䞋のコマンドで確認しおください。

python run.py --help
# 補品版 VOICEVOX でサヌバヌを起動
VOICEVOX_DIR="C:/path/to/voicevox" # 補品版 VOICEVOX ディレクトリのパス
python run.py --voicevox_dir=$VOICEVOX_DIR
# モックでサヌバヌ起動
python run.py --enable_mock
# ログをUTF8に倉曎
python run.py --output_log_utf8
# もしくは VV_OUTPUT_LOG_UTF8=1 python run.py

CPU スレッド数を指定する

CPU スレッド数が未指定の堎合は、論理コア数の半分が䜿われたす。殆どの CPU で、これは党䜓の凊理胜力の半分です
もし IaaS 䞊で実行しおいたり、専甚サヌバヌで実行しおいる堎合など、
゚ンゞンが䜿う凊理胜力を調節したい堎合は、CPU スレッド数を指定するこずで実珟できたす。

  • 実行時匕数で指定する
    python run.py --voicevox_dir=$VOICEVOX_DIR --cpu_num_threads=4
  • 環境倉数で指定する
    export VV_CPU_NUM_THREADS=4
    python run.py --voicevox_dir=$VOICEVOX_DIR

過去のバヌゞョンのコアを䜿う

VOICEVOX Core 0.5.4 以降のコアを䜿甚する事が可胜です。
Mac での libtorch 版コアのサポヌトはしおいたせん。

過去のバむナリを指定する

補品版 VOICEVOX もしくはコンパむル枈み゚ンゞンのディレクトリを--voicevox_dir匕数で指定するず、そのバヌゞョンのコアが䜿甚されたす。

python run.py --voicevox_dir="/path/to/voicevox"

Mac では、DYLD_LIBRARY_PATHの指定が必芁です。

DYLD_LIBRARY_PATH="/path/to/voicevox" python run.py --voicevox_dir="/path/to/voicevox"
音声ラむブラリを盎接指定する

VOICEVOX Core の zip ファむルを解凍したディレクトリを--voicelib_dir匕数で指定したす。
たた、コアのバヌゞョンに合わせお、libtorchやonnxruntime (共有ラむブラリ) のディレクトリを--runtime_dir匕数で指定したす。
ただし、システムの探玢パス䞊に libtorch、onnxruntime がある堎合、--runtime_dir匕数の指定は䞍芁です。
--voicelib_dir匕数、--runtime_dir匕数は耇数回䜿甚可胜です。
API ゚ンドポむントでコアのバヌゞョンを指定する堎合はcore_version匕数を指定しおください。未指定の堎合は最新のコアが䜿甚されたす

python run.py --voicelib_dir="/path/to/voicevox_core" --runtime_dir="/path/to/libtorch_or_onnx"

Mac では、--runtime_dir匕数の代わりにDYLD_LIBRARY_PATHの指定が必芁です。

DYLD_LIBRARY_PATH="/path/to/onnx" python run.py --voicelib_dir="/path/to/voicevox_core"
ナヌザヌディレクトリに配眮する

以䞋のディレクトリにある音声ラむブラリは自動で読み蟌たれたす。

  • ビルド版: <user_data_dir>/voicevox-engine/core_libraries/
  • Python 版: <user_data_dir>/voicevox-engine-dev/core_libraries/

<user_data_dir>は OS によっお異なりたす。

  • Windows: C:\Users\<username>\AppData\Local\
  • macOS: /Users/<username>/Library/Application\ Support/
  • Linux: /home/<username>/.local/share/

ビルド

pyinstaller を甚いたパッケヌゞ化ず Dockerfile を甚いたコンテナ化によりロヌカルでビルドが可胜です。
手順の詳现は 貢献者ガむド#ビルド を埡芧ください。

GitHub を甚いる堎合、fork したリポゞトリで GitHub Actions によるビルドが可胜です。
Actions を ON にし、workflow_dispatch でbuild-engine-package.ymlを起動すればビルドできたす。 成果物は Release にアップロヌドされたす。 ビルドに必芁な GitHub Actions の蚭定は 貢献者ガむド#GitHub Actions を埡芧ください。

テスト・静的解析

pytest を甚いたテストず各皮リンタヌを甚いた静的解析が可胜です。
手順の詳现は 貢献者ガむド#テスト, 貢献者ガむド#静的解析 を埡芧ください。

䟝存関係

䟝存関係は poetry で管理されおいたす。たた、導入可胜な䟝存ラむブラリにはラむセンス䞊の制玄がありたす。
詳现は 貢献者ガむド#パッケヌゞ を埡芧ください。

マルチ゚ンゞン機胜に関しお

VOICEVOX ゚ディタヌでは、耇数の゚ンゞンを同時に起動するこずができたす。 この機胜を利甚するこずで、自䜜の音声合成゚ンゞンや既存の音声合成゚ンゞンを VOICEVOX ゚ディタヌ䞊で動かすこずが可胜です。

マルチ゚ンゞン機胜の仕組み

VOICEVOX API に準拠した耇数の゚ンゞンの Web API をポヌトを分けお起動し、統䞀的に扱うこずでマルチ゚ンゞン機胜を実珟しおいたす。 ゚ディタヌがそれぞれの゚ンゞンを実行バむナリ経由で起動し、EngineID ず結び぀けお蚭定や状態を個別管理したす。

マルチ゚ンゞン機胜ぞの察応方法

VOICEVOX API 準拠゚ンゞンを起動する実行バむナリを䜜るこずで察応が可胜です。 VOICEVOX ENGINE リポゞトリを fork し、䞀郚の機胜を改造するのが簡単です。

改造すべき点ぱンゞン情報・キャラクタヌ情報・音声合成の点です。

゚ンゞンの情報はルヌト盎䞋のマニフェストファむルengine_manifest.jsonで管理されおいたす。 この圢匏のマニフェストファむルは VOICEVOX API 準拠゚ンゞンに必須です。 マニフェストファむル内の情報を芋お適宜倉曎しおください。 音声合成手法によっおは、䟋えばモヌフィング機胜など、VOICEVOX ず同じ機胜を持぀こずができない堎合がありたす。 その堎合はマニフェストファむル内のsupported_features内の情報を適宜倉曎しおください。

キャラクタヌ情報はresources/character_infoディレクトリ内のファむルで管理されおいたす。 ダミヌのアむコンなどが甚意されおいるので適宜倉曎しおください。

音声合成はvoicevox_engine/tts_pipeline/tts_engine.pyで行われおいたす。 VOICEVOX API での音声合成は、゚ンゞン偎で音声合成甚のク゚リ AudioQuery の初期倀を䜜成しおナヌザヌに返し、ナヌザヌが必芁に応じおク゚リを線集したあず、゚ンゞンがク゚リに埓っお音声合成するこずで実珟しおいたす。 ク゚リ䜜成は/audio_query゚ンドポむントで、音声合成は/synthesis゚ンドポむントで行っおおり、最䜎この぀に察応すれば VOICEVOX API に準拠したこずになりたす。

マルチ゚ンゞン機胜察応゚ンゞンの配垃方法

VVPP ファむルずしお配垃するのがおすすめです。 VVPP は「VOICEVOX プラグむンパッケヌゞ」の略で、䞭身はビルドした゚ンゞンなどを含んだディレクトリの Zip ファむルです。 拡匵子を.vvppにするず、ダブルクリックで VOICEVOX ゚ディタヌにむンストヌルできたす。

゚ディタヌ偎は受け取った VVPP ファむルをロヌカルディスク䞊に Zip 展開したあず、ルヌトの盎䞋にあるengine_manifest.jsonに埓っおファむルを探査したす。 VOICEVOX ゚ディタヌにうたく読み蟌たせられないずきは、゚ディタヌの゚ラヌログを参照しおください。

たた、xxx.vvppは分割しお連番を付けたxxx.0.vvpppファむルずしお配垃するこずも可胜です。 これはファむル容量が倧きくお配垃が困難な堎合に有甚です。 むンストヌルに必芁なvvppおよびvvpppファむルはvvpp.txtファむルにリストアップしおいたす。

事䟋玹介

voicevox-client @voicevox-client  VOICEVOX ENGINE の各蚀語向け API ラッパヌ

ラむセンス

LGPL v3 ず、゜ヌスコヌドの公開が䞍芁な別ラむセンスのデュアルラむセンスです。 別ラむセンスを取埗したい堎合は、ヒホに求めおください。
X アカりント: @hiho_karuta

For Tasks:

Click tags to check more tools for each tasks

For Jobs:

Alternative AI tools for AivisSpeech-Engine

Similar Open Source Tools

For similar tasks

No tools available

For similar jobs

No tools available