こんにちは。
読み上げ、音源ファイルの再生、を簡易化するライブラリをつくってみました。
特徴
・コード1行で実装できる (発音してほしいテキスト、言語を渡すだけです)
・発音の割り込み、スピード、トーンを調節できる
・発音開始、終了タイミングを感知できる
・国で言語指定できる (Country Codeを調べる必要ありません)
・37カ国の言語に対応している
・Swift4.0でも使える
・音源ファイルの再生も可能。終了タイミングを感知できる
ライブラリは こちら にあります。
対応する国とコード
アイルランド(en-IE), イギリス(en-GB), イスラエル(he-IL), イタリア(it-IT), インド(hi-IN), インドネシア(id-ID), オーストラリア(en-AU), オランダ(nl-NL), カナダ(fr-CA), ギリシャ(el-GR), サウジアラビア(ar-SA), スウェーデン(sv-SE), スペイン(es-ES), スロバキア(sk-SK), タイ(th-TH), チェコ(cs-CZ), デンマーク(da-DK), ドイツ(de-DE), トルコ(tr-TR), ノルウェー(no-NO), ハンガリー(hu-HU), フィンランド(fi-FI), ブラジル(pt-BR), フランス(fr-FR), ベルギー(nl-BE), ポーランド(pl-PL), ポルトガル(pt-PT), メキシコ(es-MX), ルーマニア(ro-RO), ロシア(ru-RU), 中国(zh-CN), 南アフリカ(en-ZA), 台湾(zh-TW), 日本(ja-JP), 米国(en-US), 韓国(ko-KR), 香港(zh-HK)
コード上こちらで指定しています。
インストール
Xcodeに手動でドロップします。こちらのソースをとりこんでください。
使い方
コード1行で完了です。
Speaker.speech(text: "こんにちは!", language: "ja-JP")
上は言語で指定する方法です。国で指定する場合は以下のようになります。
Speaker.speech(text: "こんにちは!", country: .Japan)
割り込みさせたい
読み上げ最中で、中断させて、再度読み上げさせたい場合、以下で実現できます。
Speaker.speech(text: "こんにちはあ!!", country: .Japan, interrupt: true)
interrupt
を追加することで、直前の読み上げを強制終了させます。デフォルトはfalse
です。
スピード変えたい
発音のスピードを調整したい場合、rate
の値を変更してください。
最小値は0.0
で、最大1.0
まで指定できます。
Speaker.speech(text: "こんにちはああ!!!", country: .Japan, rate: 1.0)
[*追記] 言語によってrate
のデフォルト値は変化するようです。全ての言語を倍速、低速対応させたい場合、AVSpeechUtteranceMaximumSpeechRate
またはAVSpeechUtteranceMinimumSpeechRate
をrateに指定してください。
デフォルトはAVSpeechUtteranceDefaultSpeechRate
です。
import AVFoundation
Speaker.speech(text: "倍速再生!!!", country: .Japan, rate: AVSpeechUtteranceMaximumSpeechRate)
Speaker.speech(text: "低速再生!!!", country: .Japan, rate: AVSpeechUtteranceMinimumSpeechRate)
ピッチ変えたい
声の高さを変えたい場合、pitch
を調整してください。
デフォルトは、1.0
で、0.5
〜2.0
の区間で調節できます。
Speaker.speech(text: "こんにちはあああ!!!!", country: .Japan, pitch: 1.0)
発音の開始、終了を感知したい
started
、finished
のコールバックを指定してください。
Speaker.speech(text: "こんにちはああああ!!!!!", country: .Japan, started: {
print("Started")
})
Speaker.speech(text: "こんにちはああああ!!!!!", country: .Japan, finished: {
print("Finished")
})
- 両方指定できます。
Speaker.speech(text: "こんにちはああああ!!!!!", country: .Japan, started: {
print("Started")
}, finished: {
print("Finished")
})
音源ファイル再生させたい
リソース名とタイプを指定してください。
Speaker.play(resource: "sample", type: "mp3")
- 終了時のcallbackも指定できます。
Speaker.play(resource: "sample", type: "mp3", finished: {
print("Finished")
})
開発環境
iOS 8+
Swift 3.0+
Xcode 8.0+