このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング第66回

ドイツ人にカタコトの英語をしゃべらせることも可能

いろいろな声、速さ、高さで自由な言葉をしゃべらせるプログラム

2017年12月11日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 前回から、AVSpeechSynthesizerを使ってiPadに人間の言葉(のように聞こえる音声)をしゃべらせるというプログラムに取り組んでいます。前回は固定した文字列で与えた文を、速さ、高さなど、やはり固定のオプションで発声させることが可能なことを確かめました。また、ニックネームのついた仮想の話者によって決まる「音声」の種類が50種類以上もあることを示しました。それらは、日本語、英語など、言語の種類や音声自体のIDによって切り替え可能なことも確かめました。

 今回は、そうした音声のバリエーションを作り出す機能を活用して、いろいろな言語の言葉をいろいろな声でしゃべらせるプログラムに仕上げます。

 まずは、テキストフィールドに入力した任意の文字列をしゃべるようにするところから始めます。次に、ピッカーを使って言語と話者を切り替えられるようにします。その後、しゃべる速さと音の高低を、それぞれスライダーで調整できるようにもしましょう。こうしたカスタマイズ機能によって、iPad上のiOSで可能な範囲での話ですが、どんな言葉でも、どんな内容でも、そしてどんなふうにもで、しゃべらせることができるようになるでしょう。

テキストフィールドの文をしゃべらせる

 まずは、一番基本的なユーザーインターフェースとして、テキストフィールドを用意し、そこにユーザーが入力したテキストをしゃべらせるものを実現しましょう。その場合、最も簡単なのは、テキストフィールドの入力が終わったタイミング(ユーザーがキーボードを閉じた時点)でスピーチを開始することです。しかし今回は別にボタンを用意して、ボタンをタップすると、そのときのテキストフィールドの内容をしゃべるようにします。それは、後でいろいろなオプションを設定できるようにした際に、オプションだけを変更して同じテキストをしゃべらせたいことがあるからです。

 というわけで、とりあえずビューコントローラーには、テキストフィールドとボタンだけを含めます。

最初のプログラムでは最小限のユーザーインターフェースとして、しゃべらせたいテキスト入力するテキストフィールドと、発声を開始するボタンだけを配置します

 ビュー全体は薄いグレーにして、テキストフィールドの背景は白、ボタンの背景は薄めの青に設定しています。ボタンをタップすると、同じビューコントローラー内に定義するspeakメソッドを呼ぶようにしました。

 そのspeakメソッドでは、前回の実験的なプログラムと同様に、とりあえずすべてデフォルトの設定でスピーチシンセサイザーとアタランスを用意し、テキストフィールドの文字列をしゃべらせます。

ボタンをタップすると呼び出されるファンクションspeakでは、デフォルトの声で、テキストフィールドに入力された文字列を読み上げます。テキストフィールドは、ビューの最上部に、ほぼビューの幅いっぱいに配置し、ボタンはそのすぐ下に、左右方向は画面中央に置いています

 viewWillLayoutSubviesメソッドでは、テキストフィールドをビューの最上部に、ボタンをそのすぐ下に配置しています。

 これを実行すると白いテキストフィールドと青い「Speak!」ボタンが表示されるので、何か入力してしゃべらせてみましょう。

テキストフィールドに何か入力してから、「Speak!」ボタンをタップしてしゃべらせてみてください。このiPadは言語設定が日本語になっているので、とりあえず日本語ならしゃべれます

 デフォルトの設定なので、iPadの「設定」の「言語設定」の音声でしゃべります。

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!