アプリ上でText to Speech(TTS)を行う
Windows Phone 8から音声読み上げが可能になりました。音声検索などで読み上げが行われます。
この機能はシステム上だけではなく、アプリ上からも利用可能です。今回はアプリ上からテキスト読み上げを行う方法を書きます。
利用APIについて
利用するAPIのはSpeechSynthesizerになります。そのまま利用すると「設定 > 音声 > 音声認識の言語」項目で設定されている言語で読み上げが行われます。SpeechSynthesizer.SetVoiceで音声認識の言語を変更する事も可能ですが、端末で対象音声がDLされていなければ利用出来ません。
このAPIを利用する上で、事前に以下の1つの機能を利用する宣言を行う必要があります。宣言箇所は「Properties/WMAppManifest.xml」の機能タブです。
- ID_CAP_SPEECH_RECOGNITION
コード
public partial class MainPage : PhoneApplicationPage { SpeechSynthesizer synthesizer; public MainPage() { InitializeComponent(); synthesizer = new SpeechSynthesizer(); } // トリガーとしてのボタンが押下された時の処理 private async void btnSpeak_Click(object sender, RoutedEventArgs e) { await synthesizer.SpeakTextAsync(txtSpeak.Text); } }
SpeechSynthesizer.SpeakTextAsyncの引数に読み上げさせたいテキストを設定するだけで、端末に設定されている言語で読み上げが行われます。
読み上げとして渡せる形式は、Text(テキスト)・Ssml/Uri(XML)の2種類から選べます。
非同期で行う事に注意
前回も書きましたが、読み上げを行うメソッドは非同期で行われる為 async/await を使うことに注意してください。