音声APIを使ってみる

1,410 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,410
On SlideShare
0
From Embeds
0
Number of Embeds
169
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

音声APIを使ってみる

  1. 1. Specialist presents Windows Phone Arch #9⾳音声APIを使ってみる伊勢  シン2013/05/14(Tue) @Fenrir Inc. ⼤大阪本社
  2. 2. おさらい
  3. 3. ⾳音声APIであそぼう!•  Windows Phone は後発のわりに、サービスや  API  が揃ってないけど、たまにキラリと光るおもしろAPIがある。•  今回はそんな⾳音声APIをためしてみましょう。
  4. 4. Windows Phone 8 の⾳音声API•  3種類のAPI– ⾳音声認識識– ⾳音声コマンド– ⾳音声読み上げ  (Text-To-Speech)http://msdn.microsoft.com/ja-‐‑‒jp/library/windowsphone/develop/jj206958(v=vs.105).aspx今回は、認識識と読み上げをやります。
  5. 5. ⾳音声合成を試す•  新規プロジェクト作成•  WMAppManifest.xmlの機能にID_CAP_SPEECHRECOGNITION を定義– ⾳音声  API 全般を使⽤用する場合のパーミッション•  ボタン1つ配置し、イベントハンドラを開く
  6. 6. ⾳音声合成を試す•  とりあえずしゃべらせる。– using Windows.Phone.Speech.Synthesis– メソッドを  async にするのをおわすれなく。private async void Button_Click(object sender, RoutedEventArgs e){var synth = new SpeechSynthesizer();await synth.SpeakTextAsync("こんにちは、Windows Phone です。");}
  7. 7. ⾳音声はどこから来るのか•  ⽇日本語エミュレータだと最初から⽇日本語をしゃべる設定になっている。– 設定>⾳音声>⾳音声認識識の⾔言語– 何も指定しなかったら、ここで設定されている⾔言語・性別でしゃべる
  8. 8. 任意の⾳音声で喋らせる•  インストールされている⾳音声から、⾔言語・性別を指定して喋らせることも可能。– InstalledVoices クラスの  All  プロパティに、インストール済みの⾳音声が⼊入ってる。– SpeechSynthesizer.SetVoice でセット•  阪急の列列⾞車車到着アナウンスは、上り(梅⽥田⾏行行き)が⼥女女性、下りが男性。
  9. 9. 阪急電⾞車車のアナウンスprivate async void Button_Click_1(object sender, RoutedEventArgs e){var synth = new SpeechSynthesizer();var maleVoice = InstalledVoices.All.Where(v => (v.Gender == VoiceGender.Male) && (v.Language == "ja-JP")).First();var femaleVoice = InstalledVoices.All.Where(v => (v.Gender == VoiceGender.Female) && (v.Language == "ja-JP")).First();synth.SetVoice(femaleVoice);await synth.SpeakTextAsync("まもなく2号線に、大阪梅田方面へ向かう電車が、到着します。");synth.SetVoice(maleVoice);await synth.SpeakTextAsync("まもなく1号線に、神戸三宮方面へ向かう電車が、到着します。");}
  10. 10. 抑揚が・・・•  なんか抑揚おかしくね?
  11. 11. 抑揚とかを制御してみる•  SSMLで記述すれば、抑揚などを制御可能•  SSML – Speech Synthesis Markup Language–  ⾳音声合成版のHTML–  W3Cの勧告にあります。http://www.asahi-net.or.jp/~ax2s-kmtn/ref/accessibility/REC-speech-synthesis11-20100907.html•  SSMLの指定は2通り–  SpeechSynthesizer.SpeakSsmlAsync•  SSML を⽂文字列列で渡す–  SpeechSynthesizer.SpeakSsmlFromUriAsync•  SSML のおいてあるURLを渡す
  12. 12. SSMLを試してみる•  サンプルの  Arch09_02_Ssml を実⾏行行–  SSML を試せるようになってます。•  主な要素–  http://msdn.microsoft.com/ja-jp/library/hh361578–  w もしくは  token : 単語の区切切り•  東京特許許可局局⻑⾧長•  <w>東京</w>特許<w>許可局</w>局⻑⾧長–  sub : 読み•  胸の<sub alias="おと">⿎鼓動</sub>をあきらめないで–  break : 休⽌止・韻•  ⼤大阪梅⽥田⽅方⾯面へ向かう電⾞車車が<break strength=“weak“ />到着します•  ⼤大変なのでほどほどでいきましょう。
  13. 13. ⾳音声合成の活⽤用法•  読み上げを⽣生かしてこういうアプリはどうでしょう。– TwitterのUserStreamをひたすら読み続けるアプリ– 読み上げニュースリーダー– 電⾞車車の到着をカウントダウン•  「新快速の発⾞車車まであと1分です」
  14. 14. ⾳音声認識識を試す•  新規プロジェクト作成•  WMAppManifest.xmlの機能にID_CAP_SPEECHRECOGNITIONID_CAP_MICROPHONEID_CAP_NETWORKING を定義– ⾳音声を聴きとるので、マイクへのアクセスが必要。•  ボタン1つ配置し、イベントハンドラを開く
  15. 15. ⾳音声認識識を試すprivate async void Button_Click(object sender, RoutedEventArgs e){var recognizerUI = new SpeechRecognizerUI();// 音声認識の候補recognizerUI.Recognizer.Grammars.AddGrammarFromList("animal", new List<string>() { "いぬ", "さる", "ねこ" }); // 音声検索画面上のタイトルrecognizerUI.Settings.ListenText = “好きな動物は以下のうちどれ?”;// 音声検索画面上の詳細recognizerUI.Settings.ExampleText = "・いぬn・さるn・ねこ"; var result = await recognizerUI.RecognizeWithUIAsync();if (result.ResultStatus == SpeechRecognitionUIStatus.Succeeded){MessageBox.Show(result.RecognitionResult.Text);}}http://d.hatena.ne.jp/hyoromo/20121110/1352573009
  16. 16. 残念念ながら•  ⽇日本語では決まった⾔言葉葉の中から、どれかが認識識されるということしかできない。– アプリ内ボイスコマンド的に使える– 英語を選択した場合は、選択肢を決めずに⽂文章⼊入⼒力力も可能。
  17. 17. 時間があまってれば…⾳音声コマンド•  MSDN参照しながらやってみよう– http://msdn.microsoft.com/ja-jp/library/windowsphone/develop/jj206959(v=vs.105).aspx•  おおまかな⼿手順– ⾳音声コマンド定義(VCD)を書く– 初回起動時にVCDファイルをシステムにインストールするコードを書く– 呼び出された時にパラメータを受け取る
  18. 18. まとめ•  Windows Phone の⾳音声機能を試しました。•  ⾳音声認識識は⽇日本語だとがっかりだけど、⾳音声合成はかなりがんばれる。•  読み上げ機能を⽣生かしたアプリを考えてみては?

×