1. はじめに
フューチャーアーキテクトでアルバイトをしている寺迫です。
代表的な音声合成サービスの使用方法や性能の違いについて調査しました。
音声合成(text-to-speech)の概要
- コンピュータを用いて音声を生成する技術(主に人間の発話音声)
- 深層学習・強化学習における音声合成モデルの性能向上により、自然な音声を生成することが出来る
- 応用分野
- 音声案内システム:券売機や電話案内、ナビゲーション等に利用される
- バーチャルキャラクター:キャラクターのセリフの作成に利用される
- 失声症の方への支援
想定読者
- 音声合成サービスを試してみたい人
- 品質の良い音声合成を行いたい人
- 音声合成サービスの差異を確認したい人
記事に含まれない内容
- 音声合成モデルの説明
- 音声合成時の具体的な読み間違い・イントネーションなどの調整方法
- 英語言語の音声合成
付録として、本記事で比較を行っていない音声合成サービスのリンク集(サンプル音声、音声合成デモ)を表にまとめています。
本記事の調査は2023年5月に行ったものです。最新の声色の種類や音声合成モデルの変更などのアップデート情報は各サービスドキュメント等の参照を推奨します。
2. 音声合成サービス比較
2.1 比較方法
比較サービス一覧
音声合成サービスのうち、(1)商用利用可能 (2)API提供あり(3)公式ドキュメントの充実(4)発音調整が可能なものを比較しました。
- Google Cloud Platform text-to-speech(以下、GCP TTS)
- Amazon Polly(以下、Polly)
- Azure text-to-speech(以下、Azure TTS)
- VOICEVOX
比較観点
8項目を比較観点としました。
- 声色の種類
- 音声合成の品質
- 音質
- ノイズ
- 読み間違い
- なまり(アクセント、イントネーション)
- 辞書機能
- 音声調整の容易さ
- 実装負荷(Software Development Kitの有無)
- 利用料金
- クォータリクエスト上限
- 入力文字制限
比較に使用したテキストデータ
平均100文字の日本語テキスト約35文で品質の評価を行いました。
2.2 比較結果詳細
声色の種類
声色の種類は日本語に限定しています。その他の言語については、公式ドキュメントの参照を推奨します。
声色の種類はVOICEVOXが多いです。アニメからアナウンスまで多彩な状況にマッチする声色が揃っています。
GCP TTS、Polly、Azure TTSはアナウンス、会話音声に向いている声色の種類があります。
サービス名 | 声色の種類 | 参照元 |
---|---|---|
VOICEVOX | ・20種類のキャラクターVOICEと複数の発話タイプ合計46種類から選択が可能である。 ・声色によってクレジット表記や契約が必要なものがある。 |
VOICEVOXホームページ |
GCP TTS | ・「BASIC1」,「WaveNet2」,「Neural23」 各自4パターンの声色が設定可能である。 ・BASIC,WaveNetの音声はロボットが発話しているような音声が生成される。 ・Neural2音声は人間のように自然である。 |
Google Cloud ドキュメント |
Polly | ・「standard4」2種類、「neural5」3種類 ・neuralの音声は人間のように自然である。 |
Amazon Polly ドキュメント |
Azure TTS | ・「neural5」7種類 ・音声は人間のように自然である。 |
Azure Cognitive Services ドキュメント |
品質
音声合成の品質は定性的な評価であり、実際に使用するテキストを用いて品質確認を推奨します。
品質の評価は以下の声色で行いました。VOICEVOX(波音リツ)、GCP TTS(ja-JP-Neural2-B)、Polly(neural Takumi)、Azure TTS(neural 七海)
Azure TTS > Polly > GCP TTS > VOICEVOXの順番で合成音声の品質が良いです。VOICEVOXはノイズが発生したり、イントネーションが不自然な時があります。Azure TTS、Polly、GCP TTSに関して、無調整だと少し不自然なところがあります。しかし、アクセント、イントネーションの調整によって、自然な音声を生成できます。
サービス名 | 音質 | ノイズ | 読み間違い | なまり | 備考 |
---|---|---|---|---|---|
VOICEVOX | △ | x | △ | △ | ノイズが発生する確率が高く、イントネーションが不自然である。 |
GCP TTS | 〇 | ◎ | ◎ | ◎ | ロボットのような平坦な発声になる場合がある。 |
Polly | ◎ | ◎ | ◎ | ◎ | 不自然な間(無音)が挿入される場合がある。 |
Azure TTS | ◎ | ◎ | ◎ | ◎ | 品質が良く、違和感を感じるところは少ない。 |
辞書機能
GCP TTS以外辞書機能を備えています。登録できる単語数の上限が決められていることや、辞書ファイルをpublicなURIに公開が必要など扱いづらいところがあります。
サービス名 | 辞書機能 | 参照元 |
---|---|---|
VOICEVOX | ・読み間違い、アクセント、エイリアス6の登録が可能 |
VOICEVOXホームページ |
GCP TTS | ・ドキュメントに記載なし | |
Polly TTS | ・XML形式のカスタム辞書ファイルを登録可能 ・読み間違い、アクセント、エイリアス6の登録が可能 ・100辞書の登録が可能 ・1辞書当たり4000文字登録可能 ・音声生成時、5辞書指定可能 |
レキシコンの管理 |
Azure TTS | ・XML構造化カスタム辞書ファイルを登録可能 ・辞書機能を使用するためにpublicなURIにファイルを配置する必要がある。 ・読み間違い、アクセント、エイリアス6の登録が可能 ・辞書の最大ファイルサイズは100KB(日本語約51,200文字)に制限 |
Azure Cognitive Services ドュメント |
利用料金
VOICEVOXは一部の声色の商用利用が有料であるが基本無料です。
GCP TTS、Polly、Azure TTSは無料枠を除き、同一料金の従量課金です。
サービス名 | 無料枠 | 超過分 | 参照元 |
---|---|---|---|
VOICEVOX | ・基本無料 |
・基本無料 | VOICEVOXホームページ |
GCP TTS | ・BASIC1 1か月あたり 400文字無料 ・WaveNet2 1か月あたり 100文字無料 ・Neural23 1か月あたり 100文字無料 |
・BASIC 100文字当たり4ドル ・WaveNet 100文字当たり16ドル ・Neural2 100文字当たり16ドル |
Text-to-Speech の料金 |
Polly | ・standard4 最初のリクエストから12か月間は1か月あたり 500万文字無料 ・neural5 最初のリクエストから 12 か月間は 1 か月あたり 100 万文字無料 |
・standard 100文字当たり4ドル ・neural 100文字当たり16ドル |
Amazon Polly 料金 |
Azure TTS | ・1か月あたり 50万文字無料 |
・100文字当たり16ドル | Speech Services の価格 |
実装負荷
GCP TTS、Polly、Azure TTSは、Software Development Kit(SDK)が準備されているため、容易に実装することが可能です。
サービス名 | 実装負荷(SDK有無) | 認証必要/不要 | 参照元 |
---|---|---|---|
VOICEVOX | SDKはない。 | 不要 | VOICEVOX APIリクエスト実装例 |
GCP TTS | C#、Go、Java、Node.js、PHP、Python、RubyでのSDKが用意されている。 | 必要 | Google Cloud ドキュメント |
Polly | Android、JavaScript、iOS、Java、.NET、Node.js、Python、PHP、RubyでのSDKが用意されている。 | 必要 | 開発者用リソース |
Azure TTS | C#、Go、Java、Node.js、PHP、Python、RubyでのSDKが用意されている。 | 必要 | Azure Speech Services |
音声調整の容易さ
Polly、AzureTTSで使用できる「カナ」を用いた、音声調整はとても直観的で優れています。GCP TTSでの音声調整は国際音素記号を使用が必要なためで学習コストと調整コストが高いです。
サービス名 | 音素・アクセント・イントネーションの調整 | GUI対応 | SSML対応7 | 調整コスト |
---|---|---|---|---|
VOICEVOX | ・GUI操作で調整可能である。 | 〇 | x | 中 |
GCP TTS | ・日本語の音素記号がサポートされていないため、<phoneme>タグ内で国際音素記号8を用いて調整を行う。 | x | 〇 | 高 |
Polly | ・<phoneme>タグ内で「’」記号を用いて、直観的に調整可能である。 | x | 〇 | 低 |
Azure TTS | ・<phoneme>タグ内で「’」記号を用いて、直観的に調整可能である。 ・ピッチ曲線でイントネーションを視覚的に調整できる。 ・Audio Content Creation(音声生成GUI)を使用できる。 |
〇 | 〇 | 低 |
カナを用いた発音調整(読み間違い+アクセント)
飴と雨のアクセント例 |
VOICEVOX、GUI上での音声調整
Azure、GUI上でのイントネーション修正
APIクォータ
GCP TTS、Polly、Azure TTSは申請することで上限を引き上げることが出来ます。
サービス名 | リクエスト上限 | 参照元 |
---|---|---|
VOICEVOX | 記載なし | VOICEVOX APIリクエスト実装例 |
GCP TTS | standard、neuralともに 16tps9 ※申請により上限を上げることができる。 |
割り当てと上限 |
Polly(SynthesizeSpeech API) | standard: 80tps、バースト制限100tps neural: 8tps、バースト制限10tps ※申請により上限を上げることができる。 |
Amazon Polly のクォータ |
Polly(StartSpeechSynthesisTask API) | standard: 10tps、バースト制限12tps neural: 1tps ※申請により上限を上げることができる。 |
Amazon Polly のクォータ |
Azure TTS | 200tps 申請により上限を上げることができる(MAX1000tps)。 |
Azure Speech Services |
SpeechSynthesisTaskとStartSpeechSynthesisTaskの違い
API名 | レスポンス | データ保存 | 入力テキスト制限 |
---|---|---|---|
SpeechSynthesisTask | 合成された音声のバイトストリーム | レスポンス結果を各自でストレージに保存 | 最大3,000文字 |
StartSpeechSynthesisTask | 非同期合成タスクオブジェクト | Amazon S3 バケットに保存 | 最大100,000文字 |
合成音声の最大長
万単位文字の音声合成を行う場合Polly、Azure TTSを使用する必要があります。
サービス名 | 生成可能な音声の長さ | 入力文字数制限 | 参照元 |
---|---|---|---|
VOICEVOX | 記述なし | 記述なし | |
GCP TTS | 記述なし | 5,000B (日本語約2,560文字) |
割り当てと上限 |
Polly(SynthesizeSpeech API) | 10分 | 3,000文字 ※SSMLタグを除く |
Quotas in Amazon Polly |
Polly(StartSpeechSynthesisTask API) | 記載なし | 100,000文字 ※SSMLタグを除く |
Quotas in Amazon Polly |
Azure TTS | 10分 | 64KB (日本語約33,000文字) |
Azure Speech Services |
2.3 比較結果まとめ
音声合成サービスを比較した結果の長所、短所をまとめました。
IaaSに依存しない場合、Azure TTS > Polly > GCP TTS > VOICEVOXの順でお勧めです。
サービス名 | 長所 | 短所 |
---|---|---|
VOICEVOX | ・基本的に無料(一部音声の商用利用が有料)で使用することができる。 ・アニメキャラクターのよう声色から朗読まで広範囲の場面に対応できる。 ・ソフトウェアのインストールのみで利用できる。 ・GUIでの直観的な合成の調整が可能である。 |
・合成音声の品質が他サービスに劣る。 ・音声調整の癖があり、コツをつかむまで時間がかかってしまう。 ・調整しても消すことができないノイズが音声する場合がある。 |
GCP TTS | SDKが充実している。 | ・ドキュメントに辞書機能の記述がない。 ・アクセント、イントネーション調整に「カナ」が使用できないため「国際音素記号8」を使用する必要がある。 |
Polly | ・SDKが充実している。 ・neuralで作成した音声は、自然な印象を受ける。 ・アクセント、イントネーションを「カナ」で直観的に調整可能である。 |
・自動的に挿入される間(音声の空白時間)が不自然な場合がある。 |
Azure TTS | ・SDKが充実している。 ・neuralで作成した音声は、自然な印象を受ける。 ・アクセント、イントネーションを「カナ」で直観的に調整可能である。 ・GUIでの直観的な合成の調整が可能である。 |
・短所に感じる箇所はなかった。 |
3. おわりに
本記事ではアナウンス、朗読の仕様用途を想定した比較検証の結果をまとめました。
生成モデルは日進月歩で性能が向上し、SOTA(Steate of the art)が続々と塗り替えられています。deep modelの音声合成は特段修正せずとも違和感が少なく驚きました。しかし、イントネーションについては調整を行わなければいけない場合が多少ありました。今後の音声合成モデル改善に期待したいです。
付録に記載した、リンク集は他の記事で見当たりませんでした。サンプル音声の再生や音声合成のデモを簡単に触ることができるのでぜひ試してほしいです。
本記事が音声合成を用いてサービスを作成する人の助けになると幸いです。
4. 付録
4.1 各サービス SAMPLE・DEMO一覧
※以下のsample・demoは音声の品質確認用途以外の目的で使用できないため注意が必要
サービス名 | 登録必要/不要 | 音声サンプル | 備考 |
---|---|---|---|
GCP TTS | 不要 | ✕ | 登録せずとも持参のテキストで音声合成を試すことができる |
Polly | 必要 | 〇 | awsの無料枠の範囲で試すことが可能 |
Azure TTS | 不要 | ✕ | 登録せずとも持参のテキストで音声合成を試すことができる |
CoeFont | 必要 | 〇 | 持参のテキストで音声合成を行う場合は登録が必要 二か月間の無料枠がある(2023年5月現在) |
ReadSpeaker | 不要 | 〇 | 登録せずとも持参のテキストで音声合成を試すことができる |
コエステーション | 不要 | 〇 | 登録せずとも持参のテキストで音声合成を試すことができる |
AITalk | 不要 | 〇 | 登録せずとも持参のテキストで音声合成を試すことができる |
RECAIUS | 必要 | ✕ | 登録後、問い合わせが必要 |
VOICE VOX | 不要 | 〇 | 登録せずとも持参のテキストで音声合成を試すことができる dokcerでVOICEVOXコンテナを起動 or ソフトウェアのインストールが必要 |
- XMLの一種
- 音声合成の制御を行うことができる
- サービスによって独自のタグ(制御方法)がある
- W3Cにおいて標準化されている
- polly SSML タグ説明ドキュメント
# polly SSMLの一例
<speak>本日、<phoneme alphabet="x-amazon-pron-kana" ph="セカイホケンキカン">世界保健機関</phoneme>が記者会見を開いた。</speak>
- 1.BASIC GCP TTSのVoice Typeの一種 信号処理アルゴリズムVocoderにより音声データを生成する。 ↩
- 2.WaveNet GCP TTSのVoice Typeの一種 DeepMind WaveNetのニューラルモデルにより音声データを生成する ↩
- 3.Neural2 GCP TTSのVoice Typeの一種 最先端の合成音声生成技術が使用されている。 ↩
- 4.standard PollyのVoice Typeの一種 録音された音声の音素をまとめ (連結)、自然な合成音声を生成する。 ↩
- 5.neural 最新のdeepmodelにより合成音声を生成する。 ↩
- 6.エイリアス
略語などの読み方を別称として登録できる例1)WHO → World Health Organization
例2)WHO → 世界保健機関 ↩ - 7.SSML(Speech Synthesis Markup Language) ↩
- 8.国際音素記号(IPA) 様々な言語の音声を文字で表記を行うために国際音声学会が定めた音声記号である。 大辞林 日本語の音 ↩
- 9.tps(transaction per second) 一秒間のトランザクション量 ↩