音声合成マークアップ言語(SSML)リファレンス(ベータ版)

Actions on Google プラットフォームは、Actions on Google の標準 SSML 要素に加えて、多くの SSML ベータ版機能をサポートしています。

サポートされているベータ版 SSML 機能の概要:

  • <phoneme>: 特定の単語の発音をカスタマイズします。
  • <say-as interpret-as="duration">: 時間を指定します。
  • <voice>: 同じリクエストで音声を切り替えます。
  • <lang>: 1 つのリクエストで複数の言語を使用します。
  • タイムポイント: 音声文字変換内の指定したポイントのタイムポイントを返すには、<mark> タグを使用します。

<phoneme>

<phoneme> タグを使用して、一列に並んだ単語のカスタム発音を生成できます。Actions on Google では、音声記号 IPAX-SAMPA がサポートされています。サポートされている言語と音素のリストについては、音素のページをご覧ください。

<phoneme> タグを適用すると、それぞれが 1 つの単語の発音を示します。

  <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
  <phoneme alphabet="x-sampa" ph='m@"hA:g@%ni:'>mahogany</phoneme>

アクセント マーカー

音声表記では、次の 3 レベルまでのアクセントが指定できます。

  1. 第一アクセント: IPA では ˈ、X-SAMPA では " で表します。
  2. 第二アクセント: IPA では ˌ、X-SAMPA では % で表します。
  3. 無強勢: どちらの表記でも、記号はありません。

言語によっては、3 レベル未満の場合やアクセントの位置が指定されない場合もあります。お使いの言語で利用可能なアクセント レベルについては、音素ページをご覧ください。アクセント記号付きの各音節の先頭に、アクセント マーカーが配置されます。たとえば、米国英語の場合:

単語の例 IPA X-SAMPA
ˈwɑːtɚ "wA:t@`
underwater ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

広範な音声文字変換と限定的な音声文字変換

一般的なルールとして、音声表記は簡略化し、音素は実際のとおりにします。たとえば、米国英語では、タップを使用する代わりに、母音間の t を音声文字変換します。

単語の例 IPA X-SAMPA
butter ˈbʌtɚˈbʌɾɚ の代わりに使用) "bVt@`"bV4@` の代わりに使用)

音素表示を使用すると、TTS の結果が不自然な音声になることもあります(たとえば、音素のシーケンスが解剖学的な観点から発音が難しい場合)。

一例は、英語の s の発話です。この場合、吸収を音声表記に反映する必要があります。

単語の例 IPA X-SAMPA
cats ˈkæts "k{ts
dogs ˈdɑːgzˈdɑːgs の代わりに使用) "dA:gz"dA:gs の代わりに使用)

削減

すべての音節には、母音を 1 つだけ含める必要があります。つまり、音節子音を避けて、代わりに弱化母音で音声表記します。次に例を示します。

単語の例 IPA X-SAMPA
kitten ˈkɪtənˈkɪtn の代わりに使用) "kIt@n"kitn の代わりに使用)
kettle ˈkɛtəlˈkɛtl の代わりに使用) "kEt@l"kEtl の代わりに使用)

分節法

必要に応じて、. を使用して音節の境界を指定できます。各音節には母音が 1 つだけ含まれている必要があります。例:

単語の例 IPA X-SAMPA
readability ˌɹiː.də.ˈbɪ.lə.tiː %r\i:.d@."bI.l@.ti:

時間

Actions on Google プラットフォームでは、時間を正しく読み取るために <say-as interpret-as="duration"> がサポートされています。たとえば、次の例は「five hours and 30 minutes」と読み上げられます。

<say-as interpret-as="duration" format="h:m">5:30</say-as>

形式設定文字列は次の値をサポートしています。

略語
h 時間
s
ms ミリ秒

<voice>

<voice> タグを使用すると、1 つの SSML リクエストで複数の音声を使用できます。次の例では、デフォルトの音声は英語の男性の音声です。デフォルトの言語(英語)と性別(男性)ではなく女性の声でフランス語で読み上げられる「qu'est-ce qui t'amène ici」を除くすべての単語がこの音声で合成されます。

<speak>And then she asked, <voice language="fr-FR" gender="female">qu'est-ce qui
t'amène ici</voice><break time="250ms"/> in her sweet and gentle voice.</speak>

また、<voice> タグを使用して、languagegender ではなく個々の音声(サポートされている音声と言語のページ音声名)を指定できます。

<speak>The dog is friendly<voice name="fr-CA-Wavenet-B">mais la chat est
mignon</voice><break time="250ms"/> said a pet shop
owner</speak>

<voice> タグを使用する場合、Actions on Google は、name(使用する音声の名前または次の属性の組み合わせのいずれかを受け取ると想定します。3 つの属性はすべて省略可能ですが、name を指定しない場合は少なくとも 1 つ指定する必要があります。

  • gender: malefemaleneutral のいずれか。
  • variant: 構成に基づいて使用する音声が複数ある場合に、タイブレーカーとして使用します。
  • language: 目的の言語。特定の <voice> タグで指定できる言語は 1 つのみです。言語を BCP-47 形式で指定します。言語の BCP-47 コードは、サポートされている音声と言語のページ言語コード列で確認できます。

requiredordering の 2 つの追加タグを使用して、gendervariantlanguage の各属性の相対的な優先度を制御することもできます。

  • required: 属性が required として指定されているものの、適切に構成されていない場合、リクエストは失敗します。
  • ordering: ordering タグの後に記述した属性はすべて、必須属性ではなく、推奨属性と見なされます。SSML は、ordering タグの後にリストされている順序で、ベスト エフォート ベースで優先属性を検討します。優先属性が正しく構成されていない場合でも、Actions on Google は誤った構成を削除し、有効な音声を返すことがあります。

required タグと ordering タグを使用した構成例:

<speak>And there it was <voice language="en-GB" gender="male" required="gender"
ordering="gender language">a flying bird </voice>roaring in the skies for the
first time.</speak>
<speak>Today is supposed to be <voice language="en-GB" gender="female"
ordering="language gender">Sunday Funday.</voice></speak>

<lang>

<lang> を使用すると、同じ SSML リクエスト内に複数の言語のテキストを含めることができます。<voice> タグを使って音声を明示的に変更しない限り、すべての言語が同じ音声で合成されます。xml:lang 文字列には対象言語を BCP-47 形式で含める必要があります(この値はサポートされている音声の表の「言語コード」で確認できます)。次の例では、「chat」がデフォルトの言語(英語)ではなく、フランス語で読み上げられます。

<speak>The french word for cat is <lang xml:lang="fr-FR">chat</lang></speak>

Actions on Google プラットフォームでは、ベスト エフォート ベースで <lang> タグがサポートされています。同じ SSML リクエストで指定した場合、すべての言語の組み合わせで同じ品質の結果が得られるわけではありません。言語の組み合わせによっては、微妙な結果やネガティブな結果になることがあります。報告されている問題:

  • <lang> タグは、日本語の漢字をサポートしていません。入力は中国語の文字として文字変換され、読み取られます。
  • アラビア語、ヘブライ語、ペルシャ語などのセミティック言語は <lang> タグでサポートされていないため、無音になります。これらの言語を使用する場合は、<voice> タグを使用して、目的の言語の音声に切り替えることをおすすめします(利用可能な場合)。