Vonage の talk ガイド
こんにちは。KDDI ウェブコミュニケーションズ(KWC)の小原です。
この記事では Vonage の音声合成(TTS: Text-To-Speech)である NCCO の talk を紹介します。talk を無料でテストする方法や、音声の間や速度を調整する SSML をご案内します。
特徴
Vonage の talk には下記の特徴があります。
- AWS と Google Cloud 双方の豊富な TTS が利用可能
- SSML の利用が無料
- SSML を含めた TTS が無料でテスト可能(有料音声を除く)
対象
この記事は下記の読者を想定しています。
NCCO
日本語を読み上げる最低限の NCCO は下記です。premium 以外は無料で利用可能です。
[
{
"action": "talk",
"text": "こんにちは、ボネージです。KWC PLUS で再販しています。",
"language": "ja-JP"
}
]
属性 | 概要 | デフォルト |
---|---|---|
text | 読み上げる文字列。最大 1500 文字(SSML タグを除く) | |
language | 日本語を利用する場合は ja-JP 指定。対応する言語一覧 | en-US |
style | 音声の種類(後述) | 0 |
premium | true 指定で自然な音声(style)になります。premium のない style もあります。0.6 円/100 文字 | false |
bargeIn | true 指定で text 読み上げ中に IVR のキー入力や音声入力を受け付けます。false は text の読み上げ終了まで入力を無視 | false |
loop | text の繰り返し回数。0 は無限ループ。最大値は 10 | 1 |
level | 音量レベル。-1 ~ 1 の範囲 | 0 |
style
日本語の style は 0 ~ 5 を指定することで男性 3 種類、女性 3種類の音声が選択可能です。
style: 0 を除いて有料の premium が用意されています。音声のサンプルはこちらのページで聴くことができます。ページ中ほどにあるため、ブラウザの Ctrl + f で japan をページ内検索すると便利です。
[
{
"action": "talk",
"text": "こんにちは、ボネージです。KWC PLUS で再販しています。",
"language": "ja-JP",
"style": 3,
"premium": true
}
]
Style | Gender | Provider | Name | Premium | SSML |
---|---|---|---|---|---|
0 | Female | Amazon Polly | Mizuki | false | true |
1 | Female | ja-JP-Standard-A | false | true | |
1 | Female | ja-JP-Wavenet-A | true | true | |
2 | Female | ja-JP-Standard-B | false | true | |
2 | Female | ja-JP-Wavenet-B | true | true | |
3 | Male | Amazon Polly | Takumi | false | true |
3 | Male | Amazon Polly | Takumi | true | true |
4 | Male | ja-JP-Standard-C | false | true | |
4 | Male | ja-JP-Wavenet-C | true | true | |
5 | Male | ja-JP-Standard-D | false | true | |
5 | Male | ja-JP-Wavenet-D | true | true |
この表は nexmo-community/vapi-tts-voices を参照し、下記スクリプトで生成しています。一部の言語や音声には SSML 対応がありません。ja-JP 以外の一覧表を作成する場合にご参照ください。
wget https://raw.githubusercontent.com/nexmo-community/vapi-tts-voices/refs/heads/main/voices.json
jq -r '.[] | select(.code == "ja-JP") | .styles[] | "\(.style),\(.gender),\(.provider),\(.name),\(.premium),\(.ssml)"' voices.json | \
sort -t, -k1n -k4f | \
gawk 'BEGIN {
print "| Style | Gender | Provider | Name | Premium | SSML |"
print "|-------|--------|-----------------|----------------------|------------|------------|"
}
{
split($0, fields, ",")
printf "| %-5s | %-6s | %-15s | %-20s | %-10s | %-10s |\n", fields[1], fields[2], fields[3], fields[4], fields[5], fields[6]
}'
テスト方法
優れた IME でも誤変換するように、TTS は漢字の読み間違いがあります。その場合は漢字ではなく、片仮名や平仮名で表記する必要があります(「上手」を「じょうず」「うわて」のように表記します)。またSSMLを利用する場合は、聞こえ方の調整をするためにもテストが必要です。talk のテスト方法はいくつかあります。
- 電話して確認
- 電話料金が必要、試行錯誤が手間
- Amazon Polly や Google Cloud のコードを書く
- AI Studio をノーコードで使う
ここでは Vonage の AI Studio を利用する方法を紹介します。AI Studio の Speak ノードを利用することでノーコードでテストができます。また、premium ではなければ無料でテストが可能です。
もし AI Studio を利用したことがなければ Vonage AI Studio を使って、電話受付業務を作成しようの「新しいエージェントの作成」まで進めてください。
Speak ノードを配置
エージェントが作成できたら Speak ノードを配置します。
text の設定
Speak ノードをクリックし、テストしたい text を Agent says に入力し、Enter キーか Enter ボタンを押します。
再生する text が Agent says の下に表示されるため、赤枠の再生ボタンを押せば再生されます。
AI Studio はベータのためか text が再生されないことがあります。その場合は再生ボタンを何回か押したり、入力した text を再編集・再入力することで再生されます。
style の変更
style の変更は Agent Details から可能です。Agent Details は AI Studio 名の左にあるハンバーガーメニューにあります。
Agent Details の Telephony タブをクリックします。
Telephony 内の Voices から style が選択可能です。下の「こんにちは、ようこそ」の部分で text のテストもできます。ただ、Speak ノードよりも再生されない確率が高いかもしれません。
AI Studio では Kazuha (premium), Tomoko (premium) が提供されていますが、NCCO には設定できません。
SSML
SSML は W3C で勧告された音声合成のマークアップ言語です。
使い方は簡単で <speak> タグで囲むだけです。
<speak>SSML のテストです</speak>
よく使う代表的な 3 つの SSML を紹介します。Vonage が対応するすべての SSML は Customizing Spoken Text を参照してください。
break
break は間を空けることができます。秒やミリ秒で指定できます。
<speak>SSML の<break time='2s' />テストです</speak>
<speak>SSML の<break time='30ms' />テストです</speak>
SSML は AI Studio や NCCO の text にそのまま書くだけで利用できます。
[
{
"action": "talk",
"text": "<speak>SSML の<break time='30ms' />テストです</speak>",
"language": "ja-JP"
}
]
prosody
読み上げ速度を変更できます。x-fast がもっとも速く、x-slow がもっとも遅く再生します。
<speak>
番号は <prosody rate='x-fast'>1 2 3 4 5 6 7 8 9 0</prosody> です。
番号は <prosody rate='fast'>1 2 3 4 5 6 7 8 9 0</prosody> です。
番号は <prosody rate='slow'>1 2 3 4 5 6 7 8 9 0</prosody> です。
番号は <prosody rate='x-slow'>1 2 3 4 5 6 7 8 9 0</prosody> です。
</speak>
数字は「いち に さん よん ご ろく なな はち きゅー ぜろ」と読み上げます。
前後の「番号は」と「です」のように日本語がないと数字が英語で読まれる場合があります。
say-as
123 は「ひゃくにじゅうさん」と読まれます。1 2 3 のようにスペースを空けることで「いち に さん」と読まれますが、say-as の digits を利用することでそのまま読み上げられます。
英単語も character を利用することで「ヴイ オー エヌ エー ジー イー」と読み上げられます。
<speak>
<say-as interpret-as='digits'>1234567890</say-as>
<say-as interpret-as='character'>Vonage</say-as>
</speak>
Discussion