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

Actions on Google プラットフォームは、 Actions on Google 標準の SSML 要素

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

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

<phoneme>

<phoneme> タグを使用して、一列に並んだ単語のカスタム発音を生成できます。Actions on Google は、 IPA および X-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@`
水中 ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

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

一般的なルールとして、音声表記は簡略化し、音素は実際のとおりにします。たとえばアメリカ英語では、(t タップ):

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

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

一例として、英語の s の有声音取り入れが挙げられます。この場合、吸収を音声表記に反映する必要があります。

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

削減

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

単語の例 IPA X-SAMPA
子猫 ˈ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"> を適切にサポートして 読み取り時間などがありますたとえば、次の例は「5」と言語化されます。 時間 30 分":

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

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

略語
h 時間
m
s
ミリ秒 ミリ秒

<voice>

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

<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 つすべて 属性は省略可能ですが、指定しない場合は少なくとも 1 つ指定する必要があります。 name

  • 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> タグを使用して、 ユーザーが希望する言語(利用可能な場合)で応答する。