iOS
ライブラリ
MIT-License
Swift
Swift3.0

[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+