tktts_winrt プログラム仕様
WinRT backend for tktts.
このモジュールはtkttsのWinRTバックエンドを提供します。 tktts_pyttsx3.pyと並行して、ドロップインスタイルのバックエンドとして機能することを目的としています。 Pythonの winsdk パッケージを介して Windows.Media.SpeechSynthesis を使用します。
- インストール(Windowsの場合):
pip install winsdk
- 注意点:
WinRT SpeechSynthesizerはWAVオーディオストリームを生成します。
speak_rate は、値が10より大きい場合、pyttsx3 のようなWPM(Words Per Minute)として解釈されます(例: 150 -> 1.0x)。 値が6以下の場合は、WinRTの相対的な速度として解釈されます。
ナレーターの「自然な音声」は、Windowsのビルドや音声パッケージによっては、サードパーティ製プログラムに公開されない場合があります。 list_available_voices() を使用して、WinRTが実際に認識できる音声を確認してください。
関連リンク: tktts_winrt.py 技術ドキュメント
- tktts_winrt.get_available_voices() list[str] | bool
利用可能なWinRT音声の名前リストを返します。
概要: システムで利用可能なWinRT音声の名前のみのリストを返します。 詳細説明: get_available_voices_info() を呼び出し、その結果から各音声の 'name' 属性を抽出してリストとして返します。 :returns: list[str] | bool: 利用可能な音声の名前のリスト。get_available_voices_info() が False を返した場合は False。
- tktts_winrt.get_available_voices_info() list[dict[str, Any]] | bool
利用可能なWinRT音声情報を辞書リストとして返します。
概要: 現在システムで利用可能なWinRT音声の詳細情報を辞書のリストとして提供します。 詳細説明: tktts_pyttsx3.py で使用されている既存のバックエンドの慣例に合わせるため、WinRTの初期化やインポートに失敗した場合は False を返します。 :returns: list[dict[str, Any]] | bool: 各音声の名前、ID、言語、性別、説明を含む辞書のリスト。初期化エラーが発生した場合は False。 :raises SystemExit: _import_winrt 内部でWinRT関連ライブラリのインポートに失敗した場合、プログラムが終了するため、この例外は再スローされます。
- tktts_winrt.list_available_voices() bool
利用可能なWinRT音声の情報をコンソールに出力します。
概要: 利用可能なWinRT音声の詳細情報を整形して標準出力に表示します。 詳細説明: get_available_voices_info() を使用して音声情報を取得し、各音声の名前、言語、性別、ID、および説明(存在する場合)をユーザーフレンドリーな形式で表示します。 :returns: bool: 音声情報の取得と表示が成功した場合は True、失敗した場合は False。
- tktts_winrt.speak(outfile: str | None, text: str, voice: str | None, speak_rate: float | int | None = None) bool | str | None
1つのテキスト文字列を合成し、再生またはWAVファイルとして保存します。
概要: 指定されたテキストを音声合成し、outfile の指定に応じて一時ファイルとして再生するか、指定されたWAVファイルに保存します。 詳細説明: パラメータは tktts_pyttsx3.speak() と互換性があります。 outfile が指定されている場合、WAVファイルがそのパスに書き込まれます。 outfile が空または None の場合、一時的なWAVファイルが生成され、winsound を使用して再生されます。 :param outfile: str | None: 出力WAVファイルのパス。Noneまたは空文字列の場合、一時ファイルとして生成し再生します。 :param text: str: 合成するテキスト文字列。 :param voice: str | None: 使用する音声の名前またはID。Noneの場合、DEFAULT_WINRT_VOICE が使用されます。 :param speak_rate: float | int | None, optional: 読み上げ速度。デフォルトはNoneで、通常速度になります。 :returns: bool | str | None:
outfile が指定されずに再生が成功した場合: True
outfile が指定され保存が成功した場合: 出力ファイルのパス (str)
失敗した場合: False または None
- tktts_winrt.speak_dialogue(dialogue: list[str], replacements: dict[str, str], target_voices: dict[str, str] | str, speakers: dict[str, Any] = {}, speak_rate: float | int = 150, temp_dir: str | None = None, outfile: str | None = None, ext: str = 'wav', cfg: Any = None) tuple[bool, list[str] | dict[Any, Any]]
対話ブロックの音声ファイルを生成します。
概要: 複数の対話ブロックに対して音声合成を行い、一時ファイルとして保存するか、結合して再生します。 詳細説明: この関数は tktts_pyttsx3.speak_dialogue() と同様の動作をします。 WinRTの音声合成APIが非同期ストリームベースであるため、発話ごとに合成が実行されます。 outfile が指定された場合、各対話ブロックの音声は一時ファイルとして保存され、そのファイルパスのリストが返されます。 outfile が指定されない場合、すべてのテキストが結合され、一度に再生されます。 WinRTバックエンドはWAV形式のみを出力するため、ext パラメータは常に"wav"として扱われます。 :param dialogue: list[str]: 処理する対話ブロックのリスト。 :param replacements: dict[str, str]: テキストに適用される置換ルールを定義する辞書。 :param target_voices: dict[str, str] | str: スピーカー名に対応する音声IDの辞書、またはすべての対話で使用する単一の音声ID文字列。 :param speakers: dict[str, Any], optional: スピーカーに関する追加情報を含む辞書。デフォルトは空の辞書。 :param speak_rate: float | int, optional: 読み上げ速度。デフォルトは150 (WPM)。 :param temp_dir: str | None, optional: 一時ファイルを保存するディレクトリのパス。Noneの場合、システムのデフォルト一時ディレクトリが使用されます。 :param outfile: str | None, optional: 最終的な出力ファイル名。このパラメータが指定されると、音声は一時ファイルに保存されます。 :param ext: str, optional: 生成される一時ファイルの拡張子。WinRTはWAVを生成するため、常に"wav"として扱われます。デフォルトは"wav"。 :param cfg: Any, optional: 設定オブジェクト。monologue 属性を持つ場合があります。デフォルトはNone。 :returns: tuple[bool, list[str] | dict[Any, Any]]:
最初の要素は処理の成否を示すブール値 (True または False)。
2番目の要素は、保存モード (outfile が指定された場合) では一時ファイルのパスのリスト (list[str])、再生モードでは空の辞書 (dict[Any, Any])。