Pull to refresh
0
Touch Instinct
Разрабатываем мобильные приложения

Синтезатор речи в iOS7

Reading time 2 min
Views 13K
В iOS7 встроили синтезатор речи, теперь заставить свое приложение говорить вопрос пары строчек кода.

За синтез речи отвечает класс AVSpeechSynthesizer Достаточно передать ему текст обернутый в класс AVSpeechUtterance и текст будет прочитан смартфоном.

Голос зависит от локали, в том числе поддерживается русский. Речь звучит четко и приятно.

var speechSynthesizer = new AVSpeechSynthesizer ();
var speechUtterance =
  new AVSpeechUtterance ("Shall we play a game?");
speechSynthesizer.SpeakUtterance (speechUtterance);


голос по умолчанию с английской локалью
Это ссылка! Кликайте с Ctrl или Cmd, на хабре нельзя встроить звук. В нашем блоге разместил пост с виджетами Sound Cloud.

Речь настраивается с помощью параметров класса AVSpeechUtterance:
  • Rate — скорость проигрывания, чем больше тем быстрее от MinimumSpeechRate до MaximumSpeechRate.
  • Voice — объект класса AVSpeechSynthesisVoice зависит только от локали, голос один женский.
  • Volume — громкость голоса, от 0 до 1.0, по умолчанию 1.0 (самый громкий)
  • PitchMultiplier — высота голоса от 0.5 до 2.0, по умолчанию 1.0.


На мой взгляд, текст по умолчанию звучит слишком быстро. Установим максимальную скорость уменьшенную в 3.6 раза
var speechSynthesizer = new AVSpeechSynthesizer ();
var speechUtterance =
	new AVSpeechUtterance ("Shall we play a game?") {
		Rate = AVSpeechUtterance.MaximumSpeechRate / (float)3.6
	};
speechSynthesizer.SpeakUtterance (speechUtterance);

голос по умолчанию, макс скорость/3.6

Синтезатор речи в iOS7 поддерживает только женский голос в 35 локалях, среди них — русская.
['ar-SA', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-IE', 'en-US', 'en-ZA', 'es-ES', 'es-MX', 'fi-FI', 'fr-CA', 'fr-FR', 'hi-IN', 'hu-HU', 'id-ID', 'it-IT', 'ja-JP', 'ko-KR', 'nl-BE', 'nl-NL', 'no-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sk-SK', 'sv-SE', 'th-TH', 'tr-TR', 'zh-CN', 'zh-HK', 'zh-TW']


var speechSynthesizer = new AVSpeechSynthesizer ();
var speechUtterance =
	new AVSpeechUtterance ("Сыграем в игру?") {
		Rate = AVSpeechUtterance.MaximumSpeechRate / (float)4,
		Voice = AVSpeechSynthesisVoice.FromLanguage ("ru-RU")
	};
speechSynthesizer.SpeakUtterance (speechUtterance);

русский, четверть макс скорости

Русский голос звучит прекрасно, попробуем проиграть длинный текст.
Лермонтов «Парус», русский, четверть макс скорости

Есть огрехи, но на мой взгляд прекрасно. Подходит для боевого использования.

Варианты приложений с синтезом речи:
  • Приложения для слепых, например, навигация в помещениях совместно с iBeacon.
  • Аудио-гиды по музею/городу, синтезированная речь не так приятна как прочитанная людьми, но текст будет понятен.
  • Приложения для авто, скутера и велосипеда. Например, можно зачитывать последние твиты. Удобно когда едешь на велосипеде на работу.
  • Туристические приложения. Например, «спасибо», «пожалуйста», «здравствуйте» на популярных языках.


В Android синтез речи появился в 2009 году (1.6+), звучит отвратительно.


Подписывайтесь на наш хабра-блог. Каждый четверг полезные статьи о мобильной разработке, маркетинге и бизнесе мобильной студии.
Tags:
Hubs:
+20
Comments 32
Comments Comments 32

Articles

Information

Website
touchin.ru
Registered
Founded
Employees
51–100 employees
Location
Россия