Gemini API 音声合成における SSML 速度調整の調査 (開発日記 No.118)
関連リンク
はじめに
昨日はSSML速度調整の検証を行いました。本日は、Google Gemini APIの音声合成におけるSSML速度調整のためのシステム指示(System Instructions)について調査し、実装を試みます。
背景と目的
Gemini APIの音声合成において、SSMLのような詳細な制御が可能かどうかを検証し、より自然で表現力豊かな音声合成を実現できるか探ることを目的とします。特に、速度調整に焦点を当て、システム指示を通じてどの程度制御できるかを確認します。
検討内容
まず、GenerateContentConfigと関連クラスの公式ドキュメントを再確認し、音声生成時にスタイル制御を目的とした「システム指示」や他のパラメータの利用方法について詳しく調査します。次に、「google-generative-ai GenerateContentConfig system_instruction speech_generation」というクエリでウェブ検索を行い、Gemini APIが提供する音声生成におけるスタイル制御の最適な方法を探します。
実装内容
以下の手順で実装を試みました。
-
公式ドキュメントの確認:
GenerateContentConfigとシステム指示に関するドキュメントを精読。 - ウェブ検索: 関連情報を収集。
-
test_tts.pyの修正: 調査結果に基づき、SSMLの指示が音声として出力されずに意図通りに動作するかを検証するため、test_tts.pyを修正。
しかし、開発を進めるにあたり、いくつかの問題に直面しました。
(tool_code list_dir executed. Result summary: dev-records/ ディレクトリの内容を一覧表示しました。)
(tool_code run_terminal_cmd executed. Result summary: オープンなGitHub Issueはありませんでした。)
(tool_code read_file executed. Result summary: 最新の開発ログ`2025-06-25_117_development.md`の内容を読み込みました。)
(tool_code read_file executed. Result summary: `rules-common/references/auto_logging_guide.yaml`ファイルが見つかりませんでした。)
(tool_code list_dir executed. Result summary: `rules-common/references/`ディレクトリも存在しませんでした。)
(tool_code list_dir executed. Result summary: `rules-common/`ディレクトリも存在しませんでした。)
(tool_code file_search executed. Result summary: `dev-docs/auto_logging_guide.yaml`にファイルが見つかりました。)
(tool_code read_file executed. Result summary: `dev-docs/auto_logging_guide.yaml`の内容を読み込みました。)
(tool_code read_file executed. Result summary: 最新の開発ログ`2025-06-25_117_development.md`の内容を読み込みました。)
技術的なポイント
今回の実装における技術的なポイントは以下の通りです。
- システム指示の利用: 自然言語による指示で音声スタイルを制御しようと試みた点。
- セグメント結合: テキストを分割して個別に音声合成し、後で結合するアプローチを試みた点。
所感
今回の開発では、Gemini APIのgemini-2.5-flash-preview-ttsモデルが、期待していたSSMLの<prosody>タグのような直接的な音声スタイル制御をサポートしていないことがわかりました。自然言語による指示も、モデルが対話の一部として解釈してしまうため、意図した速度調整は困難でした。モデルの現状の限界を把握できたことは収穫でしたが、期待していた機能が実現できなかったのは残念です。
今後の課題
今後は、Gemini APIのモデルアップデートを注視し、SSMLサポートやより高度な音声スタイル制御が可能になるか確認していく必要があります。また、他のAPIやライブラリを検討し、より柔軟な音声合成手法を探求することも視野に入れます。
まとめ
本日の開発では、Google Gemini APIの音声合成におけるSSML速度調整のためのシステム指示について調査し、実装を試みましたが、現在のモデルの機能制限により、期待する結果は得られませんでした。しかし、モデルの限界を明確に把握できたため、今後の開発の方向性を定める上で重要な知見を得ることができました。
Discussion