19
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-26

こんにちは。

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

特徴

・コード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+

19
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?