📢

[Azure] Speech Serviceで音声合成する

2022/10/15に公開

概要

Unityアプリ開発時にナレーション音声を使いたいと思い、
AzureのSpeech Serviceを利用して音声合成を行ってみました。

実現イメージ
音声合成イメージ

Speech Serviceとは?

  • MicroSoft Azureの、Cognitive Servicesの機能の一つ
  • 音声認識や、音声合成を行うことが可能

※補足

  • 音声合成(Text To Speech) <= 今回試すもの
    テキストデータから、人間の声を模した音声データを生成すること。
    (Azure公式の、こちら から実際に音声合成をお試し頂くとイメージが付きやすいです。)

  • 音声認識(Speech To Text)
    音声からテキストデータを生成すること。

環境

OS・ツールなど バージョン
MacOS Monterey( 12.5.1(21G83) )
ターミナル バージョン2.12.7 (445)

Azure SpeechServiceを作成し、キー値を取得する

  • SpeechServiceを作成し、音声合成に必要なキー値を取得します
    ※作成手順の公式ドキュメントは こちら
作成手順(クリックして開く...)
  1. Azure Portalへログインする
  2. 「Cognitive Services」を検索し、選択する
    手順-1
  3. ”音声サービス” の中の『作成』 ボタンを選択する
    手順-2
  4. サービス作成に必要な情報を入力し、『確認と作成』 ボタンを選択する
    ※入力内容は、適宜お好みの値やリージョンを選択ください。
    手順-3
  5. デプロイ完了後、『リソースに移動』 ボタンを選択する
    手順-4
  6. リソース画面に遷移後、『キーとエンドポイント』 > 『キー1』 の値をコピーする
    コピーしたキー値はメモしておいてください。
    手順-5

curlコマンドによる音声合成時のフォーマット

  • フォーマット
    フォーマットに各情報を当てはめたあと、ターミナルよりコマンド実行します。
curl --location --request POST 'https://<INSERT_REGION_HERE>.tts.speech.microsoft.com/cognitiveservices/v1' \
--header 'Ocp-Apim-Subscription-Key: <INSERT_SUBSCRIPTION_KEY_HERE>' \
--header 'Content-Type: application/ssml+xml' \
--header 'X-Microsoft-OutputFormat: <INSERT_OUTPUT_FORMAT_HERE>' \
--header 'User-Agent: curl' \
--data-raw '<INSERT_DATA_XML_HERE>' > output.mp3
  • 要設定項目の説明
    利用しているリージョンやキー値など、作成したリソースの情報に従って設定ください。
設定項目 説明
INSERT_REGION_HERE SpeechServiceの、リソースを作成したリージョンを設定する
INSERT_SUBSCRIPTION_KEY_HERE SpeechServiceの、【キーとエンドポイント】メニュー内のキー値を設定する
INSERT_OUTPUT_FORMAT_HERE 音声の出力形式を設定する。詳細は こちら を参照
INSERT_DATA_XML_HERE 音声合成データをXML形式で設定する。詳細は こちら を参照

curlコマンドのサンプル

curl --location --request POST 'https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1' \
--header 'Ocp-Apim-Subscription-Key: subscriptionkeyxxxxxxxxxx' \
--header 'Content-Type: application/ssml+xml' \
--header 'X-Microsoft-OutputFormat: audio-48khz-96kbitrate-mono-mp3' \
--header 'User-Agent: curl' \
--data-raw '<speak version='\''1.0'\'' xml:lang='\''ja-JP'\''>
    <voice xml:lang='\''ja-JP'\'' xml:gender='\''Female'\'' name='\''ja-JP-NanamiNeural'\''>
        音声にしたいテキストデータをこちらに入力します
    </voice>
</speak>' > output.mp3

参考URL

Discussion