🔰

Vonage の talk ガイド

2024/12/02に公開

こんにちは。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 Google ja-JP-Standard-A false true
1 Female Google ja-JP-Wavenet-A true true
2 Female Google ja-JP-Standard-B false true
2 Female Google ja-JP-Wavenet-B true true
3 Male Amazon Polly Takumi false true
3 Male Amazon Polly Takumi true true
4 Male Google ja-JP-Standard-C false true
4 Male Google ja-JP-Wavenet-C true true
5 Male Google ja-JP-Standard-D false true
5 Male Google 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 のテスト方法はいくつかあります。

  1. 電話して確認
    1. 電話料金が必要、試行錯誤が手間
  2. Amazon PollyGoogle Cloud のコードを書く
    1. Google Cloud は毎月の無料使用量がありますが、Amazon Polly は 12 か月後に無料利用枠がなくなり有料になります
  3. AI Studio をノーコードで使う

ここでは Vonage の AI Studio を利用する方法を紹介します。AI Studio の Speak ノードを利用することでノーコードでテストができます。また、premium ではなければ無料でテストが可能です。

もし AI Studio を利用したことがなければ Vonage AI Studio を使って、電話受付業務を作成しようの「新しいエージェントの作成」まで進めてください。

Speak ノードを配置

エージェントが作成できたら Speak ノードを配置します。

Speak

text の設定

Speak ノードをクリックし、テストしたい text を Agent says に入力し、Enter キーか Enter ボタンを押します。

再生する text が Agent says の下に表示されるため、赤枠の再生ボタンを押せば再生されます。

Play

AI Studio はベータのためか text が再生されないことがあります。その場合は再生ボタンを何回か押したり、入力した text を再編集・再入力することで再生されます。

style の変更

style の変更は Agent Details から可能です。Agent Details は AI Studio 名の左にあるハンバーガーメニューにあります。

AI Studio menu

Agent Details の Telephony タブをクリックします。

Agent Details

Telephony 内の Voices から style が選択可能です。下の「こんにちは、ようこそ」の部分で text のテストもできます。ただ、Speak ノードよりも再生されない確率が高いかもしれません。

AI Studio では Kazuha (premium), Tomoko (premium) が提供されていますが、NCCO には設定できません。

Agent Details - Voices

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>

参考資料

KWCPLUS

Discussion