Как программно использовать голосовые синтезаторы iOS? (текст в речь)
В устройствах iOS встроены голосовые синтезаторы для функции VoiceOver Accessibility. Есть ли способ использовать эти синтезаторы программно для генерации текстовых звуков?
Моя проблема: я работаю над простым приложением для детей, чтобы узнать цвета и вместо того, чтобы записывать имена цветов на каждом языке, который я хочу поддерживать и хранить в виде аудиофайлов, я бы скорее сгенерировал звуки во время выполнения с некоторыми функциями преобразования текста в речь.
Спасибо
[EDIT: этот вопрос был задан до iOS7, поэтому вы должны действительно рассмотреть проголосовавший ответ и игнорировать более старые, если вы не программный археолог]
Ответы
Ответ 1
Начиная с iOS 7, Apple предоставляет этот API.
См. этот ответ.
Objective-C
#import <AVFoundation/AVFoundation.h>
…
AVSpeechUtterance *utterance = [AVSpeechUtterance
speechUtteranceWithString:@"Hello World!"];
AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];
[synth speakUtterance:utterance];
Swift
import AVFoundation
…
let utterance = AVSpeechUtterance(string: "Hello World!")
let synth = AVSpeechSynthesizer()
synth.speakUtterance(utterance)
Ответ 2
#import <AVFoundation/AVFoundation.h>
AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"Text to say"];
[av speakUtterance:utterance];
Ответ 3
К сожалению, iOS не предоставляет публичный API для программной генерации речи.
Существует закрытый API, который вы можете использовать, если вы не отправляете его в App Store.
В противном случае см. ответы на этот вопрос для нескольких сторонних библиотек, которые вы можете использовать.
Ответ 4
Этот код работал у меня с Swift и iOS 8 на Simulator и iPhone 6. Мне нужно было добавить стандартную библиотеку AVFoundation:
import AVFoundation
// ...
func onSayMeSomething() {
let utterance = AVSpeechUtterance(string: "Wow! I can speak!")
utterance.pitchMultiplier = 1.3
utterance.rate = AVSpeechUtteranceMinimumSpeechRate * 1.5
let synth = AVSpeechSynthesizer()
synth.speakUtterance(utterance)
}
Ответ 5
вы могли бы найти это полезное Сделать доступным ваше приложение для iPhone
Как указано в "iPhone Accessibility API и Tools", стандартные элементы управления и представления UIKit автоматически доступны. Если вы используете только стандартные элементы управления UIKit, вам, вероятно, не нужно выполнять дополнительную работу, чтобы убедиться, что ваше приложение доступно. В этом случае ваш следующий шаг должен гарантировать, что информация об атрибутах по умолчанию, предоставляемая этими элементами управления, имеет смысл в вашем приложении. Чтобы узнать, как это сделать, см. "Информация о точном и полезном атрибуте поставки".
Ответ 6
Вы можете попробовать эти сторонние API: iSpeech или OpenEars