Как программно использовать iOS-синтезаторы голоса?(текст в речь) - PullRequest
39 голосов
/ 30 марта 2012

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

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

Спасибо

[РЕДАКТИРОВАТЬ: этот вопрос был задан до iOS7, так что вы должны действительно рассмотреть голосование с ответом и игнорировать старые, если вы не археолог программного обеспечения]

Ответы [ 6 ]

62 голосов
/ 19 сентября 2013

Начиная с 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)
11 голосов
/ 28 июня 2013
#import <AVFoundation/AVFoundation.h>

AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"Text to say"]; 
[av speakUtterance:utterance];
5 голосов
/ 16 сентября 2015

Этот код работал для меня с 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)
}
3 голосов
/ 30 марта 2012

К сожалению, iOS не предоставляет общедоступный API для программной генерации речи.

Существует закрытый API , который можно использовать, если вы не отправляете в App Store.

В противном случае см. Ответы на этот вопрос для ряда сторонних библиотек, которые вы можете использовать.

0 голосов
/ 30 марта 2012

Вы можете попробовать эти сторонние API: iSpeech или OpenEars

0 голосов
/ 30 марта 2012

Вы можете найти это полезным Создание приложения для iPhone доступным

Как указано в «API и инструментах доступности iPhone», стандартные элементы управления и представления UIKit доступны автоматически. Если вы используете только стандартные элементы управления UIKit, вам, вероятно, не нужно выполнять дополнительную работу, чтобы убедиться, что ваше приложение доступно. В этом случае ваш следующий шаг - убедиться, что информация об атрибутах по умолчанию, предоставляемая этими элементами управления, имеет смысл в вашем приложении. Чтобы узнать, как это сделать, см. «Предоставление точной и полезной информации об атрибутах».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...