音声合成

完了

Tip

詳細については、「 テキストと画像 」タブを参照してください。

音声合成は、テキストから音声への変換 (TTS) と呼ばれることが多く、通常はテキストを音声に変換することによってデータを音声として出力することに関連します。 音声合成は、通常、テキスト ベースのソースから可聴音声を生成します。

テキスト読み上げソリューションでは、通常、次の情報が必要です。

  • 読み上げるテキスト
  • 発声に使用する音声

音声を合成するために、システムは通常、テキストを トークン化 して個々の単語に分割し、各単語に発音音を割り当てます。 次に、ふりがなの文字起こしを プロソジク 単位 (フレーズ、句、文など) に分割します。 システムは、プロソディック ユニットから音素を作成します。 これらの音素はオーディオとして合成され、特定の音声、読み上げ速度、ピッチ、音量を割り当てることができます。

音声合成の出力は、次のような多くの目的で使用できます。

  • ユーザー入力に対する音声応答の生成。
  • メッセージを読み上げる。
  • ブロードキャストのお知らせ。

Azure Speech - テキストからスピーチへ

Azure Speech には、Microsoft Foundry ポータルで探索できる テキスト読み上げ API が含まれています。

テキスト読み上げ API を使用すると、テキスト入力を可聴音声に変換できます。音声は、コンピューターのスピーカーを介して直接再生することも、オーディオ ファイルに書き込んでもかまいません。 このサービスには、ニューラル ネットワークを使用するニューラル音声など、複数の言語と地域の発音をサポートする複数の定義済みの音声が含まれています。 ニューラル音声は、イントネーションの問題など、音声合成における一般的な制限を克服できるため、より自然な音声になります。 カスタム音声を開発し、テキスト読み上げ API で使用することもできます。

新しい Microsoft Foundry ポータルでは、Foundry プレイグラウンドで Azure Speech のテキスト読み上げ機能を調べることができます。 Azure Speech - テキスト読み上げ Foundry プレイグラウンドでは、使用可能な選択から合成音声を選択できます。 また、速度やピッチなど、オーディオの配信を制御するためにいくつかのパラメーターを調整することもできます。 合成されたテキストからオーディオ出力が生成されます。

Foundry プレイグラウンドでのテキストから音声のスクリーンショット。

Azure Text to Speech SDK の使用

Azure Speech を使用して、音声合成を使用するアプリケーションを開発できます。 Azure Text-to-Speech SDK を使用すると、アプリケーションは書き込まれたテキストを自然な音声の音声に変換できます。

SDK を使用すると、アプリケーションで次のことが可能になります。

  • Azure Speech にテキストを送信する
  • ニューラル音声を使用して音声を生成する
  • オーディオをスピーカーまたはオーディオ ファイルに再生または保存する

SDK は認証、ネットワーク通信、オーディオの書式設定、再生を処理して、アプリのエクスペリエンスに集中できるようにします。

アプリケーションの開発

テキスト読み上げ SDK は、通常、次の場合に使用されます。

  • テキストを音声に変換してすぐに再生するクライアント アプリケーション (デスクトップアプリやモバイル アプリなど)
  • バックエンド サービス: 後で再生するためにオーディオ ファイルを生成する

Python SDK をインストールしたら、プログラムを作成して実行できます。 次の Python コードについて考えてみましょう。 これを実行すると、次のようになります。

  1. アプリが Speech SDK を初期化します。エンドポイントと認証 (キーまたは Microsoft Entra ID) を提供します
  2. テキストが指定されている
  3. テキストが Azure Speech に送信される: SDK は要求と書式設定を処理します
  4. クラウドでの音声合成の実行: ニューラル モデルによってオーディオが生成される
  5. オーディオが返される: アプリがオーディオを一時的に再生、ストリーム、または保存する
import os
import azure.cognitiveservices.speech as speechsdk

# This example requires environment variables named "FOUNDRY_KEY" and "ENDPOINT"
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('FOUNDRY_KEY'), endpoint=os.environ.get('ENDPOINT'))
audio_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True)

# The neural multilingual voice can speak different languages based on the input text.
speech_config.speech_synthesis_voice_name='en-US-Ava:DragonHDLatestNeural'

speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_config)

# Get text from the console and synthesize to the default speaker.
print("Enter some text that you want to speak >")
text = input()

speech_synthesis_result = speech_synthesizer.speak_text_async(text).get()

if speech_synthesis_result.reason == speechsdk.ResultReason.SynthesizingAudioCompleted:
    print("Speech synthesized for text [{}]".format(text))
elif speech_synthesis_result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = speech_synthesis_result.cancellation_details
    print("Speech synthesis canceled: {}".format(cancellation_details.reason))
    if cancellation_details.reason == speechsdk.CancellationReason.Error:
        if cancellation_details.error_details:
            print("Error details: {}".format(cancellation_details.error_details))
            print("Did you set the speech resource key and endpoint values?")

クライアント アプリの例

たとえば、テキスト メッセージを発声するアプリを作成するとします。 コード エディターには、1 つのテキスト ファイルと、アプリケーション コードを含む 1 つの Python ファイルがあります。

Visual Studio コードのテキスト ファイルのスクリーンショット。

まず、Azure Speech のエンドポイントに接続します。 次に、 SpeechSynthesizer オブジェクトを作成します。 その後、アプリケーションはメッセージを含むテキスト ファイルを処理し、 SpeechSynthesizer オブジェクトを使用して音声を生成します。

テキスト読み上げ Python コードのスクリーンショット。

アプリケーションを実行すると、テキストが取得され、メッセージのオーディオ出力が返されます。

テキスト読み上げ Python スクリプトの結果のスクリーンショット。

次に、Azure Speech - Voice Live を使用して音声合成機能をアプリケーションに組み込む方法について説明します。