2016年7月19日火曜日

iPhoneやiPadにしゃべらせる!

iPhoneやiPadに簡単にしゃべらせることができる。

AVFoundationをimportし、(最近はプロジェクトのGeneralのところでFrameworkをAddしなくてもいいんだっけ?)
import AVFoundation
(ちなみに入力途中に表示されたAVFoundationという候補が赤線引かれてた。なんでだ?)

以下のコードでしゃべってくれる。超簡単♪

//テキスト読み上げ
let speech = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "わたしはうちゅうじんをみた!")
utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")
utterance.rate = 0.5 //速度 0.0 ~ 1.0 デフォルト0.5
utterance.pitchMultiplier = 0.3 //声の高さ デフォルト1.0
speech.speakUtterance(utterance)

utteranceってのは「言葉」とか「発言」とかいう意味の単語。
他にも前後のdelayやvolumeのプロパティ、発音のタイミングなどを管理するAVSpeechSynthesizerDelegateもある。
詳しくは公式のこの辺で。

うちの環境でデフォルトの声は女性だった。
声そのものを変更する方法はまだよくわかんないが、picthMultiplierの値を変えるとかなり印象変わるよ。
Siriの声は男性と女性と2種類あるけど、その設定を変更してもこちらの声が変更されることはなかった。
ただ、たとえば AVSpeechSynthesisVoice(language: "en-US"とかに変えると英語の音声になるよ。(アメリカ英語の場合。イギリス英語は"en-GB")
日本語のテキストは読んでくれないんで、アルファベットで書かないといけないけど。

読み上げるテキストの設定はインスタンスを作る時にしか設定できないようなので、何回も使う場合は関数にしといたほうがいい。
インスタンスを複数作っても、重ねて同時読み上げっていうのはできないようだ。(できると書かれたページもあったが、間違いではないのか?)

0 件のコメント:

コメントを投稿