Подтвердить что ты не робот

Как программно использовать голосовые синтезаторы iOS? (текст в речь)

В устройствах iOS встроены голосовые синтезаторы для функции VoiceOver Accessibility. Есть ли способ использовать эти синтезаторы программно для генерации текстовых звуков?

Моя проблема: я работаю над простым приложением для детей, чтобы узнать цвета и вместо того, чтобы записывать имена цветов на каждом языке, который я хочу поддерживать и хранить в виде аудиофайлов, я бы скорее сгенерировал звуки во время выполнения с некоторыми функциями преобразования текста в речь.

Спасибо

[EDIT: этот вопрос был задан до iOS7, поэтому вы должны действительно рассмотреть проголосовавший ответ и игнорировать более старые, если вы не программный археолог]

4b9b3361

Ответ 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