9
6

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 3 years have passed since last update.

【Swift5】 iOSの音声合成(AVSpeechSynthesizer)の声を男性に変更する

Posted at

概要

iOSでは標準で利用可能な音声合成(AVSpeechSynthesizer)が用意されている。
普通に利用する場合、女性の声が利用可能だが、声を男性に変更する方法をメモする。

AVSpeechSynthesizerの基本的な使い方については以下の記事を参照。
https://qiita.com/maKunugi/items/dc9da201a663c8773c8c

音声の変更

let voices = AVSpeechSynthesisVoice.speechVoices()

利用可能な声は、AVSpeechSynthesisVoiceクラスのspeechVoicesメソッドから取得が可能。

voiceの中身は下記のような内容。

name: Kyoko
gender(rawvalue): 0
lang: ja-JP
identifier: com.apple.ttsbundle.Kyoko-compact

speechVoicesメソッドから利用したい声を取得したら、AVSpeechUtteranceクラスにsetしてあげればOK。


let synthesizer = AVSpeechSynthesizer()
...
let utterance = AVSpeechUtterance(string:text)
utterance.pitchMultiplier = 1.0
utterance.voice = voice        
synthesizer.speak(utterance)

利用可能な日本語音声

手元の端末で確認できた日本語の音声はこちら。

- Otoya (Enhanced) #男性
ja-JP
com.apple.ttsbundle.Otoya-premium

- Hattori  #男性
ja-JP
com.apple.ttsbundle.siri_male_ja-JP_compact

- Kyoko #女性 (Default)
ja-JP
com.apple.ttsbundle.Kyoko-compact

- O-ren #女性
ja-JP
com.apple.ttsbundle.siri_female_ja-JP_compact


- Otoya #男性
ja-JP
com.apple.ttsbundle.Otoya-compact

上記の音声が確認できました。男性の声も2種類指定が可能なので、「Hattori」もしくは「Otoya」の音声を指定してあげれば男性の声で読み上げをすることが可能です。

注意事項

音声が端末で利用できるかの確認

何もしない場合はDefaultの女性の声(Kyoko)が読み上げに利用されます。
端末内にない存在しない音声を利用しようとするとクラッシュします。
そのため、端末で利用したい音声が存在しているかは必ず確認する必要があります。

var voice:AVSpeechSynthesisVoice? = voices.first{
    $0.identifier == "com.apple.ttsbundle.siri_male_ja-JP_compact"
}
if let voice = voice {
    ~~~~~
} else {
    ~~~~~
}

ユーザが音声をダウンロードすることで利用可能な音声が増える

初期状態ではほとんどの端末がDefaultの音声しか利用ができない。(シミュレータは増やせない模様)
Siriの設定やアクセシビリティの設定等で音声の変更を行うと、追加の音声データを端末にダウンロードができる。その手順を踏んだ端末には上述したような複数の音声が利用可能になる。
そのため、必ず男性の声でなければならないといった制約のあるアプリを提供したい際は、男性の音声データが端末にダウンロードされている状態にするため、うまくユーザを誘導する必要がある。

9
6
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
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?