我正在使用iOS文字转语音应用,并试图添加一个选项来使用Alex语音,这是iOS 9的新功能。我需要确定用户是否已下载了Alex语音设置 - >可访问性。我似乎无法找到如何做到这一点。
if ([AVSpeechSynthesisVoice voiceWithIdentifier:AVSpeechSynthesisVoiceIdentifierAlex] == "Not Found" ) {
// Do something...
}
原因是其他语言的声音是标准的,以一定的速度回放,与Alex的声音不同。所以我有一个可用的应用程序,但如果用户没有下载语音,iOS会自动默认为基本语音,但它会以不正确的速率播放。如果我能检测到语音没有下载,我可以补偿差异和/或建议用户。
答案 0 :(得分:3)
好的,所以我想我是在思考这个并认为它更复杂。解决方案很简单。
if (![AVSpeechSynthesisVoice voiceWithIdentifier:AVSpeechSynthesisVoiceIdentifierAlex]) {
// Normalize the speech rate since the user hasn't downloaded the voice and/or trigger a notification that they need to go into settings and download the voice.
}
感谢所有看过这个的人和@CeceXX的编辑。希望这有助于其他人。
答案 1 :(得分:0)
这是一种方法。让我们坚持以Alex为例:
- (void)checkForAlex {
// is Alex installed?
BOOL alexInstalled = NO;
NSArray *voices = [AVSpeechSynthesisVoice speechVoices];
for (id voiceName in voices) {
if ([[voiceName valueForKey:@"name"] isEqualToString:@"Alex"]) {
alexInstalled = YES;
}
}
// react accordingly
if (alexInstalled) {
NSLog(@"Alex is installed on this device.");
} else {
NSLog(@"Alex is not installed on this device.");
}
}
此方法循环播放所有已安装的语音并查询每个语音的名称。如果亚历克斯是其中之一,他已安装。
您可以查询的其他值是“语言”(返回类似en-US的语言代码)和质量(1 =标准,2 =增强)。