#きっかけ
時間を読み上げる時報アプリの影響を受けて
とりあえずiPhoneに喋らせてみよう!となりました
#コードを小出しに
###まずはインポート
import
// とりあえずインポート
import SwiftUI
import AVFoundation
###喋るための設定
// 何を喋らせるか設定
let utterance = AVSpeechUtterance(string: "こんにちは")
// 喋る言語の設定
utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")
// 喋るスピードの設定 個人的に0.5くらいが普通と感じます
utterance.rate = 0.5
// よくわからんが設定!
let synthesizer = AVSpeechSynthesizer()
// 発話
synthesizer.speak(utterance)
###でもボタンに仕込むの面倒だからfuncに放り込んだ
// アンダーバーが肝らしいが使いこなせてません
func text2speech(_ text: String) {
let utterance = AVSpeechUtterance(string: text)
utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")
utterance.rate = 0.5
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
}
###変数の設定
// @Stateで変数の変化に対応
@State private var text: String = ""
###喋らせたい言葉をTextFieldへ
// $マークが必須
TextField("入力してね", text: $text)
.padding(30)
###ボタンの設定
// 手抜きボタン!
Button("発話") {
// テキストフィールドから受け取った言葉をtextToSpeechへ
text2speech(text)
}
// ボタンを押しやすいように大型化
.font(.largeTitle)
.padding()
.background(Color.blue)
.foregroundColor(.white)
###全体像
import SwiftUI
import AVFoundation
struct ContentView: View {
@State private var text: String = ""
var body: some View {
// 上下に並ぶようにVStackで囲います
VStack {
Spacer()
TextField("入力してね", text: $text)
.padding(30)
Button("発話") {
text2speech(text)
}
.font(.largeTitle)
.padding()
.background(Color.blue)
.foregroundColor(.white)
Spacer()
}
}
func text2speech(_ text: String) {
let utterance = AVSpeechUtterance(string: text)
utterance.voice = AVSpeechSynthesisVoice(language: "ja-JP")
utterance.rate = 0.5
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
}
}
#最後に
ネットで検索してもあまり出てこないのね
Speech to Textの方はいくらでも出てきましたが
Text to Speechは少ないですね(特に日本語記事!)
#実際のところ
シミュレーターでは喋ってくれたのですが
実機にインストールしようとしても失敗しちゃうんですよね…
なんでだろ
#環境
MacBook pro 2014 Mid Big Sur
Xcode 12.5
iPhone 12 Pro iOS 14.5.1
#お願いします
インストールできない理由がわかる方居たら助けてください
よろしくお願いします
Communication with Apple failed.
Your maximum App ID limit has been reached.
You may create up to 10 App IDs every 7 days.
だそうです…