更新
IOS 13 GM=を別のデバイスにインストールしましたが、この問題は発生しませんでした。そのため、これがiOS 13 GMに固有のものなのか、それとも最初のデバイス(iPhone X)でアップグレードを行いました(iTunesの[オプションキー+更新ボタンを確認]を使用)。2番目のデバイス(iPhone SE)では、完全に復元しました。何が原因でこの状態になったのかは確かです。
元の質問
AVSpeechSynthesisVoice.speechVoices()
は、iOS 13 GMを搭載したデバイスで実行したときに利用可能な音声がないと報告しています。実際、AVSpeechSynthesisVoice(identifier:)
を使用して音声を読み込もうとすると、常にnilが返されます。シミュレータで動作します。これは以前のベータ版の問題ではなかったと思います。iOS13.1ベータ2および3で動作するようです。
誰かがこれに遭遇し、何らかの回避策を見つけましたか?この動作の意図的な変更に関するドキュメントは見当たらないので、これはバグだと思います。私はレーダーを提出するつもりです。しかし、それはiOS 13の差し迫ったリリースのために私を助けません。
この動作は、新しく作成されたシングルビュープロジェクトで再現可能であり、次の簡単なviewDidLoad
関数が含まれているビューコントローラーに追加されています。
override func viewDidLoad() {
super.viewDidLoad()
let voices = AVSpeechSynthesisVoice.speechVoices()
print("Voice Count: \(voices.count)")
}
出力は非常に長いです:
2019-09-11 10:43:09.370992-0400 SpeechTest[1617:412065] Creating client/daemon connection: C591307C-313E-4B5F-91A8-184B7E662819
2019-09-11 10:43:09.396250-0400 SpeechTest[1617:412065] Got the query meta data reply for: com.Apple.MobileAsset.MacinTalkVoiceAssets, response: 0
2019-09-11 10:43:09.397519-0400 SpeechTest[1617:412065] Consumed extension
2019-09-11 10:43:09.401982-0400 SpeechTest[1617:412065] Got the query meta data reply for: com.Apple.MobileAsset.MacinTalkVoiceAssets, response: 0
Voice Count: 0
2019-09-11 10:43:09.435890-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.445269-0400 SpeechTest[1617:412066] Consumed extension
2019-09-11 10:43:09.468849-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.499573-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.520244-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServices.GryphonVoice, response: 0
2019-09-11 10:43:09.545243-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServices.CustomVoice, response: 0
2019-09-11 10:43:09.549941-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServices.CombinedVocalizerVoices, response: 2
2019-09-11 10:43:09.550075-0400 SpeechTest[1617:412066] [AXTTSCommon] Error running custom voice query XML not present
2019-09-11 10:43:09.569114-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.599459-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.630763-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.650161-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServices.GryphonVoice, response: 0
2019-09-11 10:43:09.666885-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServices.CustomVoice, response: 0
2019-09-11 10:43:09.671279-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.Apple.MobileAsset.VoiceServices.CombinedVocalizerVoices, response: 2
2019-09-11 10:43:09.671412-0400 SpeechTest[1617:412066] [AXTTSCommon] Error running custom voice query XML not present
...
最後の7行を39回繰り返します。おそらく、知っているはずの39の声に対応しています。
これによりアプリがクラッシュすることはありませんでしたが、AVSpeechSynthesizerが宣言されるたびにメモリリークが発生しました。 AVSpeechSynthesizerをグローバル変数として宣言することでこれを解決しました
static let synth = AVSpeechSynthesizer()