世の中には様々なサービスがあふれ、増え続けていますが、人工知能(AI)を応用したサービスもたくさん出て来ています。テキストを音声に変換して出力するアプリケーションもその1つです。
音声合成ソフトウェアやサービスは長い間存在していましたが、単調で抑揚がなく、ロボットのように無感情に聞こえることが大きな欠点でした。この問題を克服するのに、Microsoft は AI を利用して人間の発声に近い音声を作成するための単純な REST ベースの API と言語 SDK のセットを構築しました。このテキスト読み上げサービスは、Azure Cognitive Services 製品スイートに組み込まれています。
”Text to Speech” REST API を無料で試すには、Microsoft の Cognitive Services の API 試用ページにアクセスし、Speech Services の [追加 >] ボタンをクリックしてください。
API キーを入手したら、認証トークンを取得する必要があります。そのためには、呼び出すエンドポイントを知る必要があります。無料トライアルで API キーを取得した場合、トークンを取得するためのエンドポイントは、https://westus.api.cognitive.microsoft.com/sts/v1.0/issuetoken になります。
デモに進むために、PowerShell と AzTextToSpeech モジュールを使用することにします。 AzTextToSpeech モジュールを使用すると、テキスト読み上げ API を簡単に操作できます。まず、管理者として実行している PowerShell コンソールで Install-Module -Name AzTextToSpeech を実行して、AzTextToSpeech モジュールをダウンロードします。
Az.CognitiveServices PowerShell モジュールが必要ですが、これは Install-Module Az を実行することでインストールできます。
モジュールをインストールしたら、
C:\Program Files\WindowsPowerShell\Modules\AzTextToSpeech\
そして、Save-ApiKey -Key
Connect-AzTextToSpeech を実行すると、configuration.json にクエリして、トークンを取得し、すべての API 呼び出しに使用される現在のセッションに保存します。トークンが取得できたので、テキストを音声に変換できます。
テキストを音声に変換するコマンドは ConvertTo-Speech です。このコマンドには、少なくとも4つの異なるパラメータが必要です。
- Text: 音声に変換したいテキストを指定します。
- AudioOutput: 出力するオーディオの種類を指定します。Tab キーを押して、利用可能なオプションに切り替えることができます。
- VoiceAgent: Cognitive Services には、男性か女性かを始め、どういう属性の音声で出力するかについて様々な選択肢があります。このパラメータも、Tab キーを使って切り替えることができます。
- OutputFile: 音声が合成された後に作成されるファイルへのパスを指定します。
これらのパラメータを指定して、ConvertTo-Speech コマンドを呼び出す例は以下のようになります。ここでは、保存したファイルを返すオプションの PassThru パラメータも使用しており、出力ファイルを Invoke-Item パラメータに送ってメディアプレーヤーですぐにファイルが開くようにしています。
PS> ConvertTo-Speech -Text 'Yay! I am in an Ipswitch article!' -AudioOutput 'audio-16khz-128kbitrate-mono-mp3' -VoiceAgent 'Guy24kRUS' -OutputFile 'C:\ipswitch.mp3' -PassThru | Invoke-Item
このコマンドを実行すると、人間が話しているような音声を聞くことができるはずです。AzTextToSpeech PowerShell モジュールの詳細については、GitHub リポジトリをご覧ください。音声変換の詳細については、マイクロソフトのドキュメントをご覧ください。
Adam Bertram
Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.