[Swift] 読み上げ機能、簡単に使えるライブラリつくったよ

More than 1 year has passed since last update.

こんにちは。

読み上げ、音源ファイルの再生、を簡易化するライブラリをつくってみました。


特徴

・コード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.52.0の区間で調節できます。

Speaker.speech(text: "こんにちはあああ!!!!", country: .Japan, pitch: 1.0)


発音の開始、終了を感知したい

startedfinishedのコールバックを指定してください。

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+