コグニティブサービスのAPIを用いて、「現在のコグニティブサービスでどのようなことができるのか」「どのようにして利用できるのか」「どの程度の精度なのか」を検証していく連載。今回は、Text To Speech APIの概要と使い方を解説し、他のサービスとの違いを4パターンで検証する。
※本稿は2017年3月10日の情報を元に作成しています。この記事内で使用している画面やコグニティブサービスの仕様は変更になっている場合があります。
本連載「認識系API活用入門」では、マイクロソフトのコグニティブサービスのAPIを用いて、「現在のコグニティブサービスでどのようなことができるのか」「どのようにして利用できるのか」「どの程度の精度なのか」を検証していきます。連載第1回の「Deep Learningの恩恵を手軽に活用できるコグニティブサービスとは」では、コグニティブサービスとは何かの概要とAPIを使うための準備の仕方を説明しました。
今回はText To Speech APIを試します。
Text To Speech APIは、テキストと言語をAPIに渡すと、その言語でテキストを発話した音声データを返してくれます。また、女性の声か男性の声かを選択できます。ちなみに日本語の女性の声は「Ayumi」、男性の声は「Ichiro」という名前だそうです。
Text To Speech APIで使用できる言語についての最新の対応状況は下記URLで確認できます。
SiriやCortanaのようにユーザーと音声で対話させたいアプリケーションを作る場合、このAPIを使って、発話させたい言葉をテキストで送ることによって、アプリケーションにより自然な会話を行わせることができます。
Text To Speech APIのドキュメントは下記URLにあります。
Text To Speech APIを使用するにはマイクロソフトのAzureサービス上で利用開始の手続きを行う必要があります。連載第1回でサービスの申し込みの詳細な手順は紹介しているので割愛しますが、Speech To Text APIは「Bing Speech API」の1つなので、「API Type」は「Bing Speech API」を指定します。「Account Name」は下の例ではAPI名に合わせて「BingSpeechAPI」としています。「Pricing Tier(価格レベル)」は無料で使用できる「F0 Free」を指定します。
作成ボタンをクリックすると、デプロイが開始されます。デプロイは1分もかからずに完了するかと思います。デプロイが完了したら「すべてのリソース」から先ほど作成した Bing Speech API をクリックします。
「Resource Management」の下の「Keys」をクリックすると、Bing Speech APIにアクセスするために必要なキー(Ocp-Apim-Subscription-Key)を取得することができます。この「Key1」の値をOcp-Apim-Subscription-Keyとしてプログラム内で使用しますので、コピーしておいてください。また、このキーの値は外部に知られることのないように大切に扱ってください。
今回作成するアプリケーションの画面は以下のようになります。発話させたい言葉を入力するテキストボックスと、その言語、声の性別、音声ファイルの形式を指定してボタンをクリックすると、音声ファイルを取得して再生する、というアプリケーションです。
Visual Studioを起動し、プロジェクト名を「TextToSpeechAPI」として新規プロジェクトを作成します。C#のWPFアプリケーションを作成します。
MainWindow.xamlは以下の通りです(※画面部分のソースコードの解説は本連載の趣旨から外れるので割愛します)。
<Window x:Class="TextToSpeechAPI.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TextToSpeechAPI" mc:Ignorable="d" Title="Text To Speech API" Height="350" Width="525"> <Grid> <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> <TextBlock Text="発話させたい言葉を入力してください" /> <TextBox Name="tboxSpeechText" Width="500" Height="80" TextWrapping="Wrap" /> <ComboBox Name="cmbLanguage" Width="120" Margin="0,10,0,0"> <ComboBoxItem Content="en-US" /> <ComboBoxItem Content="ja-JP" IsSelected="True" /> </ComboBox> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,0"> <TextBlock Text="声の性別" Width="70"/> <RadioButton Name="rdoFemale" Content="女性の声" GroupName="rdoGroupGender" IsChecked="True" /> <RadioButton Name="rdoMale" Content="男性の声" GroupName="rdoGroupGender" Margin="30,0,0,0"/> </StackPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,0"> <TextBlock Text="音声ファイル形式" Width="100"/> <RadioButton Name="rdoWAV" Content="WAV" GroupName="rdoGroupAudioFormat" IsChecked="True" /> <RadioButton Name="rdoMP3" Content="MP3" GroupName="rdoGroupAudioFormat" Margin="20,0,0,0"/> </StackPanel> <Button Name="btnCallTextToSpeech" Content="G O" Click="btnCallTextToSpeech_Click" Width="200" Height="50" Margin="0,20,0,0"/> <TextBlock Name="tblkMessage" TextWrapping="Wrap"/> <MediaElement Name="mePlayWav" /> </StackPanel> </Grid> </Window>
Copyright © ITmedia, Inc. All Rights Reserved.