go-voicevox

module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2025 License: MIT

README

✍️ Go VOICEVOX

Language Go Version GitHub tag (latest by date)

🚀 プロジェクトの処理概要

本ツールは、入力されたスクリプトを解析し、VOICEVOXエンジンと連携して並列で音声合成を行い、単一のWAVファイルとして出力するプロセスを自動化します。

  1. 起動と設定の読み込み (cmd): main.go が起動し、CLIコマンド構造を実行します。
  2. VOICEVOX Executorの初期化 (factory.go): VOICEVOX API URLの決定、client.go の初期化、話者データのロードを統括し、実行に必要な依存関係(EngineExecutor)を組み立てます。
  3. スクリプト解析 (script_parser.go): 入力スクリプトを話者タグ(例:[ずんだもん])に基づいて複数のセグメントに分割します。
  4. 音声合成処理 (engine.go):
    • Functional Options を適用し、フォールバックタグなどの設定を決定した後、セグメントごとに並列処理を開始します。
    • client.go を利用し、テキストとスタイルIDを元に /audio_query を呼び出し、音声クエリJSONを取得します。
    • 取得したクエリJSONとスタイルIDを元に /synthesis を呼び出し、個々のWAVデータ(バイトスライス)を取得します。
  5. WAV結合 (audio.go): 並列処理で取得されたすべてのWAVデータを結合し、ヘッダー情報(ファイルサイズ、データサイズ)を再計算して、単一の有効なWAVファイルを構築します。
  6. ファイル出力 (engine.go): 最終的な結合済みWAVファイルを指定されたパスに、必要に応じてディレクトリを作成して保存します。

🌳 プロジェクト構成ツリー図

このツリー図は、go-voicevox プロジェクトのコアロジックを格納する pkg ディレクトリ内の主要なファイル構成を示しています。

go-voicevox/
├── cmd/
│   └── main.go       # 実行エントリポイントとCLI構造の実行
├── internal/         # (設定ファイルなど)
├── pkg/
│   └── voicevox/     # VOICEVOXクライアントライブラリ本体
│       ├── audio.go          # WAVデータの結合とヘッダー処理
│       ├── client.go         # VOICEVOX APIクライアント
│       ├── const.go          # 定数定義 (WAVヘッダー, スタイルタグ, etc.)
│       ├── engine.go         # コア処理エンジン/バッチ処理
│       ├── error.go          # カスタムエラー定義
│       ├── factory.go        # Executorの初期化と依存関係の構築 (NewEngineExecutor)
│       ├── model.go          # データモデルとインターフェース (DataFinder, Parser)
│       ├── script_parser.go  # スクリプト解析ロジック
│       └── speaker_loader.go # 話者データのロード
└── README.md

📄 ファイルごとの役割説明

3. pkg ディレクトリ (汎用ライブラリ - 再利用可能)
機能カテゴリ(パッケージ名) 構成ファイル 役割
voicevox factory.go 初期化ファクトリ。VOICEVOXエンジンのURL設定、Clientの初期化、SpeakerDataのロードなど、実行器 (EngineExecutor) の組み立てに必要な全ての依存関係の解決を一元的に行います。
engine.go コア処理エンジンFunctional Options を適用し、スクリプト解析、並列音声合成処理の実行、エラー集約、WAV結合を統括します。また、ファイル書き込み時に出力ディレクトリの作成も担当します。
client.go VOICEVOX APIクライアント/audio_query/synthesis などのAPIリクエストを処理し、httpkit.Client を利用してリトライ機能を適用します。
audio.go WAVデータ処理。複数のWAVファイルバイトスライスからオーディオデータを抽出し、正しいヘッダーを持つ単一のWAVファイルに結合するロジックを提供します。
speaker_loader.go 話者データローダー/speakers エンドポイントから話者・スタイルIDを取得し、スタイルID検索のためのデータ構造 (SpeakerData) を構築します。
model.go データモデル/インターフェースSpeakerData などのデータ構造と、DataFinderParserEngineExecutor などのコアインターフェースを定義し、責務分離を支えます。
const.go 定数定義。WAVヘッダーサイズ、サポート対象話者、スタイルタグ、APIタイムアウトなど、すべての静的定数を一元管理します。
error.go カスタムエラー。API通信失敗、JSON解析失敗、WAVヘッダーエラー、バッチ処理エラーなど、パッケージ全体で使用されるカスタムエラー型を定義します。

📜 ライセンス (License)

このプロジェクトは MIT License の下で公開されています。

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL