📝

SSML速度調整の検証(開発日記 No.117)

に公開

関連リンク

はじめに

昨日はSSMLを用いた音声合成において、速度調整の指示語がそのまま音声として出力されてしまうという問題に直面しました。今日はこの問題を解決するため、Google Gemini APIにおけるSSMLの利用可能性を検証します。

背景と目的

SSML(Speech Synthesis Markup Language)は、音声合成の表現力を高めるための強力なツールです。しかし、現在の実装では速度調整の指示が意図せず音声として出力されてしまうため、SSML構造が音声入力指示を適切に制御できているかを確認する必要があります。そこで、Google Gemini APIを用いて、同一話者内での速度調整が実現可能かどうかを検証します。

検討内容

問題解決のため、以下の検討を行います。

  1. Web調査: Gemini APIがSSMLを直接サポートしているか、<prosody>タグを解釈する方法を調査します。google-generative-aiライブラリのドキュメントやサンプルコードも確認します。
  2. 実験と検証: Web調査の結果をもとに、test_tts.pyを修正し、SSMLが意図通りに動作するかを検証します。APIへのSSMLの渡し方も検討します。

実装内容

本日は、Web調査を中心に実施しました。

  • Web調査:
    • google-generative-ai GenerateContentConfig system_instruction speech_generation」というキーワードで検索し、Gemini APIにおける音声生成のスタイル制御方法を調査しました。
    • Gemini APIがSSMLを直接入力として受け入れるのではなく、自然言語プロンプトで制御する傾向があることを再確認しました。

技術的なポイント

Gemini APIのGenerateContentConfigと関連クラスのドキュメントを精査し、「システム指示(System Instructions)」という概念がモデルの振る舞いを制御するために重要であることを確認しました。この「システム指示」をどのように活用して、SSMLの指示を反映させるかが今後の焦点となります。

所感

昨日の問題を受けて、今日は集中的にWeb調査を行いました。Gemini APIの特性上、SSMLを直接扱うのではなく、自然言語プロンプトやシステム指示を通じて間接的に制御する必要があることがわかりました。ドキュメントの読み込みや検索に時間がかかりましたが、問題解決の糸口が見えてきたように感じます。

今後の課題

今後は、Web調査で得られた情報を基に、test_tts.pyを修正し、実際にシステム指示を活用して速度調整を試みます。特に、GenerateContentConfigのパラメータを調整し、SSMLの<prosody>タグを自然言語プロンプトに変換せずに、APIが解釈できるように工夫する必要があります。

まとめ

本日は、SSML速度調整の問題解決に向け、Gemini APIのドキュメント調査とWeb検索に注力しました。システム指示の活用が鍵となることがわかり、今後の実装と検証に期待が持てます。明日は、実際にコードを修正し、APIの挙動を確認する予定です。

GitHubで編集を提案

Discussion