tktts プログラム仕様
tktts.py - 複数のテキスト読み上げ(TTS)エンジンを統合し、音声生成・再生・保存を行うモジュール
- 概要:
本モジュールは、複数のテキスト読み上げ(TTS)エンジン(pyttsx3, VoiceVox, AquesTalkPlayer, OpenAIなど)を 統一されたインターフェースで利用するための機能を提供します。 テキストファイルの読み込み、話者ごとの音声マッピング、音声ファイルの生成、結合、一時ファイルの管理、 そして最終的な音声の保存または再生までの一連の処理をサポートします。
- 詳細説明:
必要なライブラリのチェックと不足時の案内機能。
各TTSエンジンモジュールを安全にインポートする機構。
テキスト入力元(ファイルまたはクリップボード)からのデータ読み込みと、対話形式/独話形式の解析。
話者ごとの音声割り当て(デフォルト音声、指定音声、話者マッピングの更新)。
選択されたTTSエンジンによる音声生成(各エンジン固有のパラメータ対応)。
生成された複数の音声ファイルの時間間隔を考慮した結合。
最終的な音声ファイルの指定フォーマットでの保存またはインメモリ再生(pyttsx3の場合)。
一時ディレクトリおよび一時ファイルの自動クリーンアップ。
`tkTTS`クラスによる、よりオブジェクト指向的なTTS操作の提供。
- 関連リンク:
- ai.tktts.apply_replacements(text, replacements)[ソース]
置換辞書に基づいてテキスト内の指定された文字列を置換します。
- 詳細:
置換は大文字小文字を無視して行われます。
- ai.tktts.get_available_voices(endpoint=None)[ソース]
現在選択されているTTSエンジンが利用可能な音声名のリストを取得します。
- 詳細:
内部で`get_tts`を呼び出し、取得したTTSモジュールの`get_available_voices`メソッドを呼び出します。
- ai.tktts.get_available_voices_info(endpoint=None)[ソース]
現在選択されているTTSエンジンが利用可能な音声の詳細情報を取得します。
- 詳細:
内部で`get_tts`を呼び出し、取得したTTSモジュールの`get_available_voices_info`メソッドを呼び出します。
- ai.tktts.get_speaker_dict(tts_engine, dialogue, voices, default_voicevox_voice='四国めたん', default_pyttsx3_voice='Zira', default_aqt_preset='れいむ', default_optnai_voice='alloy')[ソース]
対話データと指定された音声設定に基づいて、話者ごとの音声マッピング辞書を生成します。
- 詳細:
`voices`引数でセミコロン区切りで指定された音声リストを優先的に使用します。
指定がない場合、TTSエンジンごとのデフォルト音声が使用されます。
独話(話者なし)の場合やファイル内で定義されていない話者には、デフォルト音声が割り当てられます。
- パラメータ:
tts_engine (str) -- 使用するTTSエンジンの名前(例: "pyttsx3", "voicevox")。
dialogue (list[tuple[str or None, str]]) -- (speaker, text)のタプルのリスト。
voices (str) -- セミコロン区切りの音声名リスト(例: "voice1;voice2")。
default_voicevox_voice (str) -- VoiceVoxのデフォルト音声名。
default_pyttsx3_voice (str) -- pyttsx3のデフォルト音声名。
default_aqt_preset (str) -- AquesTalkPlayerのデフォルトプリセット名。
default_optnai_voice (str) -- OpenAIのデフォルト音声名。
- 戻り値:
{話者名: 音声名}形式のマッピング辞書。
- 戻り値の型:
- ai.tktts.get_tts(tts_engine)[ソース]
指定されたTTSエンジンのモジュールオブジェクトを取得します。
- 詳細:
`TTS_ENGINES`辞書から対応するエンジンモジュールを検索します。 モジュールがインポートに失敗している場合、エラーメッセージを出力しNoneを返します。
- パラメータ:
tts_engine (str) -- 取得したいTTSエンジンの名前。
- 戻り値:
TTSエンジンモジュールオブジェクト、または見つからない/インポート失敗の場合はNone。
- 戻り値の型:
ModuleType or None
- ai.tktts.list_available_voices(tts_engine, endpoint=None)[ソース]
指定されたTTSエンジンが利用可能な音声のリストを表示します。
- ai.tktts.load_text(input_path, monologue=False, wait_for_clipboard=True)[ソース]
指定された入力元(ファイルまたはクリップボード)からテキストを読み込み、話者とテキストのペアのリストを返します。
- 詳細:
- ai.tktts.normalize_speaker(speaker, tts_engine)[ソース]
話者名を正規化します。
- 詳細:
話者名からスタイル情報(例: (元気))や括弧を除去し、基本となる話者名のみを抽出します。 現在の実装では、空白で区切られた最初の部分を話者名としています。
- ai.tktts.parse_kv_string(kv_string, keys=[], allow_no_key_kv_string=False)[ソース]
"key=val;key=val"形式の文字列を辞書に変換します。
- 詳細:
- ai.tktts.speak_dialogue(args, dialogue, voice_map=None, speakers={}, replacements=None, default_voicevox_voice='四国めたん', default_pyttsx3_voice='Zira', default_aqt_preset='れいむ', default_optnai_voice='alloy', endpoint=None, output_format='mp3')[ソース]
指定されたTTSエンジンを使用して、対話データから音声を生成し、結合して保存または再生します。
- 詳細:
- パラメータ:
args (argparse.Namespace) -- コマンドライン引数を格納するオブジェクト(tts, outfile, monologue, speak_rate, tinterval, temp_dirなどを保持)。
dialogue (list[tuple[str or None, str]]) -- (speaker, text)のタプルのリスト。
voice_map (dict[str or None, str] or None) -- {話者名: 音声名}形式のマッピング辞書。Noneの場合、自動生成されます。
replacements (dict or None) -- テキスト置換ルールを定義する辞書。
default_voicevox_voice (str) -- VoiceVoxのデフォルト音声名。
default_pyttsx3_voice (str) -- pyttsx3のデフォルト音声名。
default_aqt_preset (str) -- AquesTalkPlayerのデフォルトプリセット名。
default_optnai_voice (str) -- OpenAIのデフォルト音声名。
endpoint (str or None) -- (VoiceVoxなどで使用) TTSエンジンのAPIエンドポイントURL。
output_format (str) -- 出力オーディオファイルのフォーマット(例: 'mp3', 'wav')。
- 戻り値:
成功した場合は出力ファイルのパス、失敗した場合はFalse。
- 戻り値の型:
- class ai.tktts.tkTTS(tts_name=None, config={})[ソース]
ベースクラス:
object複数のテキスト読み上げ(TTS)エンジンを抽象化し、一貫したインターフェースを提供するクラス。
- 詳細:
内部で各TTSエンジンのモジュールを管理し、話者マッピング、音声リストの取得、 音声生成などの機能を提供します。set_engine`で利用するTTSエンジンを切り替えることができます。 各種ヘルパー関数(`load_text, `normalize_speaker`など)をラップしています。
- パラメータ:
- list_available_voices(tts_name=None, endpoint=None)[ソース]
指定されたTTSエンジンが利用可能な音声のリストを表示します。
- 詳細:
クラスのインスタンスメソッドとして、モジュールレベルの`list_available_voices`関数を呼び出します。
- load_text(input_path, monologue=False, wait_for_clipboard=True)[ソース]
指定された入力元からテキストを読み込み、話者とテキストのペアのリストを返します。
- 詳細:
クラスのインスタンスメソッドとして、モジュールレベルの`load_text`関数を呼び出します。
- normalize_speaker(speaker, tts_name=None)[ソース]
話者名を正規化します。
- 詳細:
クラスのインスタンスメソッドとして、モジュールレベルの`normalize_speaker`関数を呼び出します。
- parse_kv_string(kv_string, keys=[], allow_no_key_kv_string=False)[ソース]
"key=val;key=val"形式の文字列を辞書に変換します。
- 詳細:
クラスのインスタンスメソッドとして、モジュールレベルの`parse_kv_string`関数を呼び出し、 話者名の正規化を適用します。
- set_aquestalk_path(aquestalk_path)[ソース]
AquesTalkPlayerの実行可能ファイルのパスを設定します。
- パラメータ:
aquestalk_path (str) -- AquesTalkPlayerの実行可能ファイルへのパス。
- 戻り値:
None
- 戻り値の型:
None
- set_endpoint(endpoint)[ソース]
TTSエンジンのAPIエンドポイントを設定します。
- パラメータ:
endpoint (str) -- 設定するAPIエンドポイントURL。
- 戻り値:
None
- 戻り値の型:
None
- set_engine(tts_name)[ソース]
使用するTTSエンジンを設定します。
- パラメータ:
tts_name (str) -- 設定するTTSエンジンの名前。
- 戻り値:
None
- 戻り値の型:
None
- show_voice_map(infile, voices, VOICE_MAPS, is_monologue, tts_name=None, endpoint=None)[ソース]
入力ファイルから話者を抽出し、指定された音声マッピングと組み合わせて、最終的な話者-音声マッピングを表示します。
- 詳細:
入力ファイル(infile)から話者を検出し、その話者リストを表示します。
`VOICE_MAPS`と`voices`引数に基づいて`update_voice_map`を呼び出し、 最終的な音声マッピングを生成し表示します。
- パラメータ:
- 戻り値:
テキストデータの取得に成功した場合はTrue、失敗した場合はFalse。
- 戻り値の型:
- speak_dialogue(dialogue=None, voice_map=None, speakers={}, replacements=None, endpoint=None, output_format='mp3', config=None)[ソース]
指定されたTTSエンジンと設定を使用して、対話データから音声を生成し、結合して保存または再生します。
- 詳細:
クラスのインスタンスメソッドとして、モジュールレベルの`speak_dialogue`関数を呼び出します。 インスタンスに設定されている`endpoint`や`config`を自動的に渡します。
- パラメータ:
dialogue (list[tuple[str or None, str]] or None) -- (speaker, text)のタプルのリスト。
voice_map (dict[str or None, str] or None) -- {話者名: 音声名}形式のマッピング辞書。Noneの場合、自動生成されます。
replacements (dict or None) -- テキスト置換ルールを定義する辞書。
endpoint (str or None) -- (VoiceVoxなどで使用) TTSエンジンのAPIエンドポイントURL。Noneの場合、インスタンスに設定されているエンドポイントを使用します。
output_format (str) -- 出力オーディオファイルのフォーマット(例: 'mp3', 'wav')。
config (object or None) -- コマンドライン引数を格納するオブジェクト。Noneの場合、インスタンスに設定されているconfigを使用します。
- 戻り値:
成功した場合は出力ファイルのパス、失敗した場合はFalse。
- 戻り値の型: