Распознавание Речи И Синтез В Любое Ios-Приложение За Час

Вводная часть: Сам инструментарий называется NDEV. Чтобы получить необходимый код (его мало) и документацию (его много), нужно зарегистрироваться на сайте в «программе сотрудничества».

Веб-сайт: Dragonmobile.nuancemobiledeveloper.com/public/index.php Это все геморрой, если у вашего приложения менее полумиллиона клиентов и они пользуются услугами менее 20 раз в день.

Сразу после регистрации вы получите членство «Серебро», которое позволит вам пользоваться этими услугами бесплатно.

Разработчикам предлагается пошаговая инструкция по внедрению сервисов распознавания и синтеза речи в их iOS-приложение: Набор инструментов (SDK) содержит как клиентские, так и серверные компоненты.

Схема иллюстрирует их взаимодействие на верхнем уровне:

Распознавание речи и синтез в любое iOS-приложение за час

Dragon Mobile SDK состоит из различных примеров кода и шаблонов проектов, документации и программной платформы (фреймворка), упрощающей интеграцию речевых сервисов в любое приложение.

Фреймворк Speech Kit позволяет легко и быстро добавлять в приложения сервисы распознавания и синтеза речи (TTS, Text-to-Speech).

Платформа также обеспечивает доступ к компонентам обработки речи на стороне сервера через асинхронные чисто сетевые API, что минимизирует накладные расходы и потребление ресурсов.

Платформа Speech Kit представляет собой полнофункциональную «инфраструктуру» высокого уровня, которая автоматически управляет всеми сервисами низкого уровня.



Распознавание речи и синтез в любое iOS-приложение за час

Архитектура речевого комплекта Главная часть На уровне приложения разработчику доступны два основных сервиса: распознавание и синтез речи из текста.

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

 Детектор окончания речи определяет, когда пользователь закончил говорить, и при необходимости автоматически останавливает запись.

 Компонент кодирования сжимает и распаковывает потоковое аудио, снижая требования к полосе пропускания и уменьшая среднюю задержку.

Серверная система отвечает за большую часть операций, входящих в цикл обработки речи.

Процесс распознавания или синтеза речи полностью выполняется на сервере, обрабатывающем или синтезирующем аудиопоток.

Кроме того, сервер выполняет аутентификацию согласно конфигурации разработчика.

В этой конкретной статье мы сосредоточимся на разработке iOS. Платформу Speech Kit можно использовать так же, как и любую стандартную программную платформу iPhone, например Foundation или UIKit. Единственное отличие состоит в том, что Speech Kit представляет собой статический фреймворк и полностью содержится в компиляции вашего приложения.

Speech Kit имеет дело непосредственно с несколькими ключевыми рабочими компонентами ОС iPhone, которые необходимо включить в приложение как взаимозависимые, чтобы они были доступны во время работы приложения.

Помимо Foundation в проект Xcode необходимо добавить компоненты System Configuration и Audio Toolbox: 1. Начните с выбора программных платформ (группа Framework) в рамках вашего проекта.

2. Затем щелкните правой кнопкой мыши или удерживая клавишу «Команда» «Фреймворки» и в появившемся меню выберите: Добавить ‣Существующие фреймворки… 3. Наконец, выберите нужные платформы и нажмите кнопку «Добавить».

Выбранные платформы отображаются в папке Frameworks (см.

рисунок выше).

Чтобы начать использовать программную платформу SpeechKit, добавьте ее в свой новый или существующий проект: 1. Откройте свой проект и выберите группу, в которой вы хотите разместить платформу Speech Kit, например: file:Frameworks. 2. В меню выберите Проект ‣ Добавить в проект… 3. Затем найдите фреймворк «SpeechKit.framework», в который вы распаковали набор инструментов Dragon Mobile SDK, и нажмите «Добавить».

4. Чтобы убедиться, что Speech Kit находится в вашем проекте и не связан с исходным расположением, выберите «Копировать элементы.

», а затем «Добавить».

5. Как видите, в ваш проект добавлена платформа Speech Kit, которую вы можете расширить для доступа к публичным заголовкам.

Платформы, необходимые для Speech Kit

Распознавание речи и синтез в любое iOS-приложение за час

Платформа Speech Kit предоставляет один заголовок верхнего уровня, который обеспечивает доступ ко всему интерфейсу прикладного программирования (API), включая классы и константы.

Вам необходимо импортировать заголовки Speech Kit во все исходные файлы, в которых вы собираетесь использовать сервисы Speech Kit: #Импортировать Теперь вы можете начать использовать сервисы распознавания и преобразования текста в речь (синтеза речи).

Платформа Speech Kit представляет собой веб-службу и требует некоторой базовой настройки перед использованием классов распознавания или синтеза речи.

Данная установка выполняет две основные операции:  Во-первых, он идентифицирует и авторизует ваше приложение.

 Во-вторых, он устанавливает соединение с речевым сервером, что обеспечивает быструю обработку запросов речи и, следовательно, повышает качество взаимодействия с пользователем.

Примечание Указанное сетевое подключение требует авторизации учетных данных и настроек сервера, указанных разработчиком.

Необходимые разрешения предоставляются с помощью портала Dragon Mobile SDK: Dragonmobile.nuancemobiledeveloper.com .

Настройка установочного комплекта Ключ приложения SpeechKitApplicationKey запрашивается программной платформой и должен быть установлен разработчиком.

Ключ действует как пароль вашего приложения к серверам обработки речи и должен храниться в тайне во избежание злоупотреблений.

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

Таким образом, процесс сводится к копированию и вставке строк в исходный файл.

Перед инициализацией системы Speech Kit необходимо установить ключ приложения.

Например, вы можете настроить ключ приложения следующим образом: const unsigned char[] SpeechKitApplicationKey = {0x12, 0x34, .

, 0x89}; Метод установки setupWithID:host:port содержит 3 параметра:  Идентификатор приложения  Адрес сервера  Порт Параметр ID идентифицирует ваше приложение и используется вместе с ключом вашего приложения для предоставления авторизации для доступа к речевым серверам.

Настройки хоста и порта определяют речевой сервер, который может варьироваться от приложения к приложению.

Поэтому вам всегда следует использовать значения, указанные в параметрах аутентификации.

Платформа настраивается с использованием следующего примера: [SpeechKit setupWithID:@"NMDPTRIAL_Acme20100604154233_aaea77bc5b900dc4005faae89f60a029214d450b" хост:@"10.0.0.100" порт: 443]; Примечание Метод setupWithID:host:port является методом класса и не создает объект (экземпляр).

Этот метод предназначен для однократного вызова во время работы приложения и установки базового сетевого подключения.

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

Метод не сообщает об ошибке подключения/авторизации.

Успех или неудача данной настройки известен с помощью классов SKRecouncer и SKVocalizer. На этом этапе речевой сервер полностью настроен и платформа начинает устанавливать соединение.

Это соединение будет оставаться открытым в течение некоторого времени, гарантируя быструю обработку последующих голосовых запросов, пока активно используются голосовые службы.

Если время соединения истекло, оно прерывается, но восстанавливается автоматически одновременно со следующим голосовым запросом.

Приложение настроено и готово распознавать и синтезировать речь.

Распознавание речи Технология OCR позволяет пользователям диктовать, а не печатать там, где обычно требуется ввод текста.

Распознаватель речи выдает список текстовых результатов.

Он никоим образом не привязан к какому-либо объекту пользовательского интерфейса (UI), поэтому выбор наиболее подходящего результата и выборка альтернативных результатов оставляются на усмотрение пользовательского интерфейса каждого приложения.



Распознавание речи и синтез в любое iOS-приложение за час

Процесс распознавания речи Инициирование процесса признания 1. Перед использованием службы распознавания речи убедитесь, что вы настроили исходную платформу Speech Kit с помощью метода setupWithID:host:port. 2. Затем создайте и инициализируйте объект SKRecouncer: 3. Распознаватель = [[SKRecouncer alloc] initWithType:SKSearchRecouncerType 4. обнаружение:SKShortEndOfSpeechDetection 5. язык: @“en_US” 6. делегат:сам]; 7. Метод initWithType:detection:language:delegate инициализирует распознаватель и запускает процесс распознавания речи.

 Параметр типа — NSString *, это одна из констант распознавания типов, определенных платформой Speech Kit и доступных через заголовок SKRecouncer.h. Nuance может предоставить вам другие значения для ваших уникальных потребностей в распознавании, и в этом случае вам нужно будет добавить расширение NSString.  Параметр обнаружения определяет модель обнаружения конца речи и должен соответствовать одному из типов SKEndOfSpeechDetection.  Параметр языка определяет язык речи в виде строки в формате языкового кода ISO 639, за которой следует подчеркивание «_», за которым следует код страны ISO 3166-1. Примечание Например, английский язык, на котором говорят в США, обозначается en_US. Обновленный список поддерживаемых языков для распознавания доступен в FAQ: Dragonmobile.nuancemobiledeveloper.com/faq.php .

8. Делегат получает результат распознавания или сообщение об ошибке, как описано ниже.

Получение результатов распознавания Чтобы получить результаты распознавания, обратитесь к методу делегата распознаватель:didFinishWithResults: — (void)распознаватель:(SKRecouncer *)распознаватель DidFinishWithResults:(SKRecognition *)results { [автовыпуск распознавателя]; // выполняем некоторые действия по результатам } Метод делегирования будет применен только в случае успешного завершения процесса, список результатов будет содержать ноль или более результатов.

Первый результат всегда можно найти с помощью метода firstResult. Даже при отсутствии ошибки в объекте результатов распознавания может присутствовать совет (предложение) от речевого сервера.

Такой совет (предложение) необходимо предоставить пользователю.

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

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

Помимо ошибки, как упоминалось в предыдущем разделе, в результате могут присутствовать или отсутствовать подсказки.

— (void) распознаватель: (SKRecouncer *) распознаватель DidFinishWithError: (NSError *) предложение об ошибке: (NSString *) предложение { [автовыпуск распознавателя]; // сообщаем пользователю об ошибке и даем совет } Управление этапами записи Чтобы дополнительно получить информацию о том, когда распознаватель начинает или заканчивает запись звука, используйте методы делегирования распознавания: и распознавания.

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

— (void)распознавательDidBeginRecording:(SKRecouncer *)распознаватель { // Обновляем пользовательский интерфейс, чтобы указать, что система записывает } Сообщение распознавателяDidFinishRecording: отправляется до того, как речевой сервер завершит получение и обработку аудиофайла и, следовательно, до того, как результат станет доступен.

— (void)распознавательDidFinishRecording:(SKRecouncer *)распознаватель { // Обновляем пользовательский интерфейс, чтобы указать, что запись остановлена, а речь все еще обрабатывается } Это сообщение отправляется независимо от наличия модели обнаружения конца записи.

Сообщение отправляется одинаково как при вызове метода stopRecording, так и при обнаружении сигнала обнаружения окончания записи.

Установка «звуковых иконок» (сигналов) Кроме того, «звуковые значки» можно использовать для воспроизведения звуковых сигналов до и после записи, а также после отмены сеанса записи.

Вам необходимо создать объект SKEarcon и установить для него метод setEarcon:forType: Speech Kit. В приведенном ниже примере показано, как в примере приложения устанавливаются «значки звука».

— (void)setEarcons { // Воспроизведение "звуковых иконок" SKEarcon* EarconStart = [SKEarcon EarconWithName:@“earcon_listening.wav”]; SKEarcon* EarconStop = [SKEarcon EarconWithName:@“earcon_done_listening.wav”]; SKEarcon* EarconCancel = [SKEarcon EarconWithName:@“earcon_cancel.wav”]; [SpeechKit setEarcon:earconStart forType:SKStartRecordingEarconType]; [SpeechKit setEarcon:earconStop forType:SKStopRecordingEarconType]; [SpeechKit setEarcon:earconCancel forType:SKCancelRecordingEarconType]; } При вызове восходящего блока кода (после того, как вы настроили базовое программное обеспечение Speech Kit с помощью метода setupWithID:host:port), аудиофайл Earcon_listening.wav воспроизводится до начала процесса записи, а аудиофайл Earcon_done_listening.wav воспроизводится.

воспроизводится после завершения записи.

Если сеанс записи отменен, для пользователя воспроизводится аудиофайл Earcon_cancel.wav».

Метод «earconWithName:» работает только для аудиофайлов, которые поддерживаются устройством.

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

Интерфейс записи звука поддерживает эту функцию с помощью атрибута audioLevel, который возвращает относительный уровень мощности записанного звука в децибелах.

Диапазон этого значения характеризуется плавающей точкой и находится в пределах от 0,0 до -90,0 дБ, где 0,0 — самый высокий уровень мощности, а -90,0 — нижний предел звуковой мощности.

Этот атрибут должен быть доступен во время записи, в частности, между получением сообщений распознавателяDidBeginRecording: и распознавателяDidFinishRecording:.

В общем, вам нужно будет использовать метод таймера, такой как PerformSelector:withObject:afterDelay:, чтобы регулярно отображать уровень мощности.

Текст в речь Класс SKVocalizer предоставляет разработчикам веб-интерфейс синтеза речи.



Распознавание речи и синтез в любое iOS-приложение за час

Процесс синтеза речи Инициализация процесса синтеза речи 1. Прежде чем начать использовать службу синтеза речи, убедитесь, что основная программная платформа настроена с помощью Speech Kit с помощью метода setupWithID:host:port. 2. Затем создайте и инициализируйте объект SKVocalizer для преобразования текста в речь: 3. вокалайзер = [[SKVocalizer alloc] initWithLanguage:@“en_US” 4. делегат:сам]; 5. 1. Метод initWithLanguage:delegate: инициализирует службу синтеза речи языком по умолчанию.

 Параметр языка представляет собой NSString *, который определяет язык как код языка ISO 639, подчеркивание «_», за которым следует код страны ISO 3166-1. Например, английский язык, используемый в США, имеет формат en_US. Каждый поддерживаемый язык имеет один или несколько уникальных голосов, мужских или женских.

Примечание Обновленный список поддерживаемых языков синтеза речи доступен на сайте: Dragonmobile.nuancemobiledeveloper.com/faq.php .

Список поддерживаемых языков будет обновляться по мере появления поддержки новых языков.

Новые языки не обязательно потребуют обновления существующего Dragon Mobile SDK.  Делегированный параметр определяет объект для получения статусов и сообщений об ошибках от синтезатора речи.

2. Метод initWithLanguage:delegate: использует голос по умолчанию, выбранный Nuance. Чтобы выбрать другой голос, используйте метод initWithVoice:delegate: вместо предыдущего.

 Параметр voice — NSString*, он определяет модель звука.

Например, голос по умолчанию для британского английского — Саманта.

Примечание Обновленный список поддерживаемых голосов, сопоставленных с поддерживаемыми языками, доступен по адресу: Dragonmobile.nuancemobiledeveloper.com/faq.php .

5. Чтобы начать процесс преобразования текста в речь, вам необходимо использовать методspokeString: или talkMarkupString:.

Эти методы отправляют запрошенную строку на речевой сервер и инициируют потоковую передачу и воспроизведение звука на устройстве.

6. [вокализатор talkString:@“Привет, мир.

”] Примечание Метод SpeakMarkupString используется точно так же, как и метод SpeakString, с той лишь разницей, что класс NSString* выполняется языком разметки синтеза речи, предназначенным для описания синтезируемой речи.

Недавние обсуждения языков разметки синтеза речи выходят за рамки этого документа, но дополнительную информацию по этой теме, предоставленную W3C, можно прочитать по адресу www.w3.org/TR/speech-synthesis .

Синтез речи — это сетевая служба, поэтому упомянутые выше методы являются асинхронными — как правило, сообщение об ошибке не отображается сразу.

О любых ошибках сообщается делегату в виде сообщений.

Управление системой синтеза речи с обратной связью Синтезированная речь не будет воспроизведена мгновенно.

Скорее всего, произойдет небольшая задержка, пока запрос будет отправлен в голосовую службу и перенаправлен обратно.

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

— (void)vocalizer:(SKVocalizer *)vocalizer willBeginSpeakingString:(NSString *)text { // Обновляем пользовательский интерфейс, чтобы указать, когда начнется воспроизведение речи } Класс NSString* в сообщении действует как ссылка на исходную строку, выполняемую одним из методовspokeString или talkMarkupString, и может использоваться во время последовательного воспроизведения трека, когда выполняются соответствующие запросы преобразования текста в речь.

В конце воспроизведения речи отправляется сообщение voiceizer:didFinishSpeakingString:withError. Это сообщение всегда отправляется, если процесс воспроизведения прошел успешно или возникла ошибка.

В случае успеха ошибка будет устранена.

— (void)vocalizer:(SKVocalizer *)vocalizer DidFinishSpeakingString:(NSString *)text withError:(NSError *)error { если (ошибка) { // Отображение диалога ошибки пользователю } еще { // Обновляем пользовательский интерфейс, чтобы указать конец воспроизведения } } После этих манипуляций вам останется только отладить соответствующий сервис и использовать его.

Теги: #iOS #разработка #мобильные приложения #разработчик #разработчики #программа #NDEV #речевые сервисы #нюанс #внедрение #внедрение #синтез речи #распознавание речи #речевые технологии #Разработка для iOS

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.