Домой / Faq / Google открыла доступ к Cloud Speech API, лежащей в основе Google Ассистента технологии распознавания речи. Использование Google Cloud Speech API v2 в Asterisk для распознавания русской речи

Google открыла доступ к Cloud Speech API, лежащей в основе Google Ассистента технологии распознавания речи. Использование Google Cloud Speech API v2 в Asterisk для распознавания русской речи

С этого дня независимые разработчики получили доступ к Cloud Speech API, технологии распознавания речи, на которой основаны продукты Google. Продукт, получивший обновление, теперь доступен в Google Cloud.

Открытая бета-версия Cloud Speech была выпущена прошлым летом. Эта технология с простым API позволяет разработчикам преобразовывать аудио в текст. Модели нейронной сети могут распознавать более 80 языков и диалектов, а готовая транскрипция появляется сразу после проговаривания текста.

API построен на базе технологии, которая обеспечивает функцию распознавания речи в Google Assistant, Search и Now, однако в новой версии были внесены изменения для адаптации технологии под нужды пользователей Cloud.

Чем отличается новая версия Cloud Speech API?

Благодаря отзывам разработчиков команда Google смогла повысить точность транскрипции продолжительных аудиозаписей и ускорить процесс обработки данных в 3 раза по сравнению с первоначальной версией. Также была добавлена поддержка других аудиоформатов, включая WAV, OPUS и Speex.

По статистике, раньше этот API использовался чаще всего для управления приложениями и устройствами с помощью голосового поиска, речевых команд и голосового меню. Но Cloud Speech может быть использован в совершенно разных IoT-устройствах, включая автомобили, телевизоры, колонки и, конечно, телефоны и ПК.

Среди частых случаев применения технологии стоит отметить её использование в организациях для анализа работы колл-центров, отслеживания общения с клиентами и повышения продаж.

Если Вы слишком медленно печатаете на клавиатуре, а учиться десятипальцевому методу набора лень, можете попробовать воспользоваться современными программами и сервисами голосового ввода текста.

Клавиатура, бесспорно, достаточно удобный инструмент управления компьютером. Однако, когда дело доходит до наборки длинного текста, мы понимаем всё её (а, если быть честными, то наше:)) несовершенство... На ней ещё нужно уметь быстро печатать!

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

Каково же было моё разочарование, когда я понял, что на тот момент никаких реально работающих (а тем более бесплатных) решений для этого дела не существовало. Были, правда, отечественные разработки, вроде "Горыныча" и "Диктографа". Они понимали русский язык, но, увы, качество распознавания речи имели довольно низкое, требовали долгой настройки с созданием словаря под свой голос, да ещё и стоили довольно недёшево...

Потом на свет появился Android и ситуация немного сдвинулась с мёртвой точки. В этой системе голосовой ввод появился в качестве встроенной (и довольно удобной) альтернативы ввода с виртуальной экранной клавиатуры. И вот недавно в одном из комментариев меня спросили, есть ли возможность голосового ввода для Windows? Я ответил, что пока нет, но решил поискать и оказалось, что, может и не совсем полноценная, но такая возможность существует! О результатах моих изысканий и будет сегодняшняя статья.

Проблема распознавания речи

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

Как видим, преобразование речи в текст происходит в несколько этапов:

  1. Оцифровка голоса . На этом этапе качество зависит от чёткости дикции, качества микрофона и звуковой карты.
  2. Сравнение записи с записями в словаре . Здесь работает принцип "чем больше - тем лучше": чем больше записанных слов содержит словарь, тем выше шансы того, что Ваши слова будут распознаны правильно.
  3. Вывод текста . Система автоматически, ориентируясь по паузам, пытается выделить из потока речи отдельные лексемы, соответствующие шаблонным лексемам из словаря, а затем выводит найденные соответствия в виде текста.

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

Со второй проблемой, увы, не всё так просто... Компьютер, в отличие от человека, не может корректно распознать одну и ту же фразу, сказанную, например, женщиной и мужчиной. Для этого в его базе должны существовать оба варианта озвучки разными голосами!

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

Я не зря упомянул про Андроид чуть выше. Дело в том, что Гугл, который его разрабатывает, создал и единственный на сегодня общедоступный глобальный онлайн-словарь для распознавания речи (причём многоязычный!) под названием Google Voice API . Подобный словарь для русского языка также создаёт Яндекс, но пока он, увы, ещё непригоден для использования в реальных условиях. Поэтому практически все бесплатные решения, которые мы рассмотрим ниже, работают именно со словарями Google. Соответственно, все они имеют одинаковое качество распознавания и нюансы заключаются лишь в дополнительных возможностях...

Программы голосового ввода

Полноценных программ для голосового ввода под Windows не так уж много. Да и те, которые есть и понимают русский язык, в основном являются платными... Например, стоимость популярной пользовательской системы преобразования голоса в текст RealSpeaker стартует с отметки 2 587 руб, а профессионального комплекса Цезарь-Р аж с 35 900 руб!

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

Основное окно программы имеет максимально простой интерфейс - индикатор уровня звука и всего три кнопки: включить запись, остановить запись и открыть окно настроек. Работает MSpeech также весьма просто. Вам нужно нажать кнопку записи, установить курсор в окно, в которое должен выводиться текст и начать диктовать. Для большего удобства запись и её остановку лучше производить горячими клавишами, которые можно задать в Настройках:

Кроме горячих клавиш Вам может потребоваться изменить тип передачи текста в окна нужных программ. По умолчанию установлен вывод в активное окно, однако, можно задать передачу в неактивные поля или в поля конкретной программы. Из дополнительных возможностей стоит отметить группу настроек "Команды", которая позволяет реализовать голосовое управление компьютером при помощи заданных Вами фраз.

Вообще же MSpeech - довольно удобная программа, которая позволяет набирать текст голосом в любом окне Windows. Единственный нюанс в её использовании - компьютер должен быть подключён к Интернету для доступа к словарям Гугла.

Голосовой ввод онлайн

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

Ну и, естественно, первым делом стоит упомянуть о "родном" сервисе Google под названием Web Speech API :

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

Если Вы не используете какую-либо узкоспециализированную терминологию и говорите внятно, то сможете получить весьма неплохой результат. Кроме слов сервис "понимает" ещё и знаки препинания: если Вы скажете "точка" или "запятая", необходимый знак появится в форме вывода.

По окончании записи распознанный текст будет автоматически выделен и Вы сможете скопировать его в буфер обмена или отправить по почте.

Из недостатков стоит отметить лишь возможность работы сервиса только в браузере Google Chrome старше 25-й версии, а также отсутствие возможности мультиязычного распознавания.

Кстати, на нашем сайте вверху Вы найдёте полностью русифицированную версию этой же формы распознавания речи. Пользуйтесь на здоровье;)

На базе сервиса Гугла существует достаточно аналогичных онлайн-ресурсов распознавания речи. Одним из представляющих для нас интерес можно назвать сайт Dictation.io :

В отличие от Web Speech API, Dictation.io имеет более стильное оформление в виде блокнота. Основным его преимуществом перед сервисом Гугла является то, что он позволяет остановить запись, а затем снова запустить и при этом введённый ранее текст сохранится пока Вы сами не нажмёте кнопку "Clear".

Как и сервис Google Dictation.io "умеет" ставить точки, запятые, а также восклицательный знак и знак вопроса, но не всегда начинает новое предложение с большой буквы.

Если же Вы ищете сервис с максимальным функционалом, то, наверное, одним из лучших в этом плане будет :

Главные преимущества сервиса:

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

Единственным недостатком сервиса (кроме уже описанных общих недостатков Web Speech API) является не совсем привычный для подобных сервисов алгоритм работы. После нажатия кнопки записи и надиктовки текста, его нужно проверить, выбрать вариант, наиболее соответствующий тому, что Вы хотели сказать, а затем перенести в текстовый редактор внизу. После чего процедуру можно повторить.

Плагины для Хрома

Кроме полноценных программ и онлайн-сервисов, существует ещё один способ распознать речь в текст. Этот способ реализовывается за счёт плагинов для браузера Google Chrome.

Главным преимуществом использования плагинов является то, что с их помощью Вы можете вводить текст голосом не только в специальной форме на сайте сервиса, но и в любом поле ввода на любом веб-ресурсе! Фактически плагины занимают промежуточную нишу между сервисами и полноценными программами для голосового ввода.

Одним из лучших расширений для перевода речи в текст является SpeechPad :

Не совру, если скажу, что SpeechPad - один из лучших русскоязычных сервисов перевода речи в текст. На официальном сайте Вы найдёте довольно мощный (хоть и немного староватый дизайном) онлайн-блокнот со множеством продвинутых функций, среди которых есть:

  • поддержка голосовых команд управления компьютером;
  • улучшенная поддержка расстановки знаков препинания;
  • функция отключения звуков на ПК;
  • интеграция с Windows (правда, на платной основе);
  • возможность распознавания текста с видео или аудиозаписи (функция "Транскрибация");
  • перевод распознанного текста на любой язык;
  • сохранение текста в текстовый файл, доступный для скачивания.

Что же касается плагина, то он предоставляет нам максимально упрощённый функционал сервиса. Установите курсор в нужное Вам поле ввода, вызовите контекстное меню и нажмите на пункт "SpeechPad". Теперь подтвердите доступ к микрофону и, когда поле ввода станет розовым, надиктуйте нужный текст.

После того, как Вы прекратите говорить (пауза более чем в 2 секунды), плагин сам остановит запись и выведет в поле всё, что Вы сказали. При желании Вы можете зайти в настройки плагина (правый клик на иконке плагина вверху) и изменить параметры по умолчанию:

Как ни странно, но во всём Интернет-магазине расширений Гугла мне больше не попалось ни одного стоящего плагина, который бы позволял реализовать голосовой ввод в любом текстовом поле. Единственным похожим расширением было англоязычное . Оно добавляет иконку микрофона ко всем полям ввода на веб-странице, но не всегда правильно располагает её, поэтому она может оказаться вне экрана...

  • Asterisk ,
  • Google API ,
  • Яндекс API
  • Выбор API для распознавания речи

    Я рассматривал только вариант api, коробочные решения были не нужны, поскольку требовали ресурсы, данные для распознания не критичны для бизнеса, да и использование их существенно сложнее и требует больше человеко-часов.

    Первым был Yandex SpeechKit Cloud. Мне он сразу понравился простотой использования:

    Curl -X POST -H "Content-Type: audio/x-wav" --data-binary "@speech.wav" "https://asr.yandex.net/asr_xml?uuid=<идентификатор пользователя>&key=&topic=queries"
    Ценовая политика 400 рублей за 1000 запросов. Первый месяц бесплатно. Но после этого пошли только разочарования:

    На передачу большого предложения, приходил ответ из 2-3 слов
    - Распознавались эти слова в странной последовательности
    - Попытки изменения топика положительных результатов не принесли

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

    Следующим стал сервис от Google. Интернет пестрит статьями, в которых предлагается использовать API для разработчиков Chromium. Сейчас ключей для этого API уже так просто получить нельзя. Поэтому мы будем использовать коммерческую платформу.

    Ценовая политика - 0-60 минут в месяц бесплатно. Далее 0,006 $ за 15 секунд речи. Каждый запрос округляется к цифре кратной 15. Первые два месяца бесплатно, для создания проекта нужна кредитная карта. Варианты использования API в базовой документации разнообразны. Мы будем использовать скрипт на Python:

    Скрипт из документации

    """Google Cloud Speech API sample application using the REST API for batch processing.""" import argparse import base64 import json from googleapiclient import discovery import httplib2 from oauth2client.client import GoogleCredentials DISCOVERY_URL = ("https://{api}.googleapis.com/$discovery/rest?" "version={apiVersion}") def get_speech_service(): credentials = GoogleCredentials.get_application_default().create_scoped(["https://www.googleapis.com/auth/cloud-platform"]) http = httplib2.Http() credentials.authorize(http) return discovery.build("speech", "v1beta1", http=http, discoveryServiceUrl=DISCOVERY_URL) def main(speech_file): """Transcribe the given audio file. Args: speech_file: the name of the audio file. """ with open(speech_file, "rb") as speech: speech_content = base64.b64encode(speech.read()) service = get_speech_service() service_request = service.speech().syncrecognize(body={ "config": { "encoding": "LINEAR16", # raw 16-bit signed LE samples "sampleRate": 16000, # 16 khz "languageCode": "en-US", # a BCP-47 language tag }, "audio": { "content": speech_content.decode("UTF-8") } }) response = service_request.execute() print(json.dumps(response)) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("speech_file", help="Full path of audio file to be recognized") args = parser.parse_args() main(args.speech_file)

    Подготовка к использованию Google Cloud Speech API

    Нам необходимо будет зарегистрировать проект и создать ключ сервисного аккаунта для авторизации. Вот ссылка для получения триала, необходим гугл-аккаунт. После регистрации необходимо активировать API и создать ключ для авторизации. После необходимо скопировать ключ на сервер.

    Перейдем к настройке самого сервера, нам необходимы будут:

    Python
    - python-pip
    - python google api client

    Sudo apt-get install -y python python-pip pip install --upgrade google-api-python-client
    Теперь нам необходимо экспортировать две переменных окружения, для успешной работы с апи. Первая это путь к сервисному ключу, вторая название вашего проекта.

    Export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account_file.json export GCLOUD_PROJECT=your-project-id
    Скачаем тестовый аудио файл и попытаемся запустить скрипт:

    Wget https://cloud.google.com/speech/docs/samples/audio.raw python voice.py audio.raw {"results": [{"alternatives": [{"confidence": 0.98267895, "transcript": "how old is the Brooklyn Bridge"}]}]}
    Отлично! Первый тест успешен. Теперь изменим в скрипте язык распознавания текста и попробуем распознать его:

    Nano voice.py service_request = service.speech().syncrecognize(body={ "config": { "encoding": "LINEAR16", # raw 16-bit signed LE samples "sampleRate": 16000, # 16 khz "languageCode": "ru-RU", # a BCP-47 language tag
    Нам необходим.raw аудио файл. Используем для этого sox

    Apt-get install -y sox sox test.wav -r 16000 -b 16 -c 1 test.raw python voice.py test.raw {"results": [{"alternatives": [{"confidence": 0.96161985, "transcript": "\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435 \u0412\u0430\u0441 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f"}]}]}
    Гугл возвращает нам ответ в юникоде. Но мы хотим видеть нормальные буквы. Поменяем немного наш voice.py:

    Print(json.dumps(response))
    Мы будем использовать

    S = simplejson.dumps({"var": response}, ensure_ascii=False) print s
    Добавим import simplejson . Итоговый скрипт под катом:

    Voice.py

    """Google Cloud Speech API sample application using the REST API for batch processing.""" import argparse import base64 import json import simplejson from googleapiclient import discovery import httplib2 from oauth2client.client import GoogleCredentials DISCOVERY_URL = ("https://{api}.googleapis.com/$discovery/rest?" "version={apiVersion}") def get_speech_service(): credentials = GoogleCredentials.get_application_default().create_scoped(["https://www.googleapis.com/auth/cloud-platform"]) http = httplib2.Http() credentials.authorize(http) return discovery.build("speech", "v1beta1", http=http, discoveryServiceUrl=DISCOVERY_URL) def main(speech_file): """Transcribe the given audio file. Args: speech_file: the name of the audio file. """ with open(speech_file, "rb") as speech: speech_content = base64.b64encode(speech.read()) service = get_speech_service() service_request = service.speech().syncrecognize(body={ "config": { "encoding": "LINEAR16", # raw 16-bit signed LE samples "sampleRate": 16000, # 16 khz "languageCode": "en-US", # a BCP-47 language tag }, "audio": { "content": speech_content.decode("UTF-8") } }) response = service_request.execute() s = simplejson.dumps({"var": response}, ensure_ascii=False) print s if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("speech_file", help="Full path of audio file to be recognized") args = parser.parse_args() main(args.speech_file)


    Но перед его запуском нужно будет экспортировать ещё одну переменную окружения export PYTHONIOENCODING=UTF-8 . Без неё у меня возникли проблемы с stdout при вызове в скриптах.

    Export PYTHONIOENCODING=UTF-8 python voice.py test.raw {"var": {"results": [{"alternatives": [{"confidence": 0.96161985, "transcript": "Здравствуйте Вас приветствует компания"}]}]}}
    Отлично. Теперь мы можем вызывать этот скрипт в диалплане.

    Пример Asterisk dialplan

    Для вызова скрипта я буду использовать простенький диалплан:

    Exten => 1234,1,Answer exten => 1234,n,wait(1) exten => 1234,n,Playback(howtomaketicket) exten => 1234,n,Playback(beep) exten => 1234,n,Set(FILE=${CALLERID(num)}--${EXTEN}--${STRFTIME(${EPOCH},%d-%m-%Y--%H-%M-%S)}.wav) exten => 1234,n,MixMonitor(${FILE},/opt/test/send.sh [email protected] "${CDR(src)}" "${CALLERID(name)}" "${FILE}") exten => 1234,n,wait(28) exten => 1234,n,Playback(beep) exten => 1234,n,Playback(Thankyou!) exten => 1234,n,Hangup()
    Я использую для записи mixmonitor и после окончания запускаю скрипт. Можно использовать record и это, пожалуй, будет лучше. Пример send.sh для отправки - он предполагает, что у вас уже настроен mutt:

    #!/bin/bash #скрипт для отправки уведомлений # экспортируем необходимые переменные окружения # файл лицензии гугла export GOOGLE_APPLICATION_CREDENTIALS=/opt/test/project.json # название проекта export GCLOUD_PROJECT=project-id # кодировка для питона export PYTHONIOENCODING=UTF-8 #список переменных на входе EMAIL=$1 CALLERIDNUM=$2 CALLERIDNAME=$3 FILE=$4 # перекодируем звуковой файл в raw для того, чтобы отдать его гугл апи sox /var/spool/asterisk/monitor/$FILE -r 16000 -b 16 -c 1 /var/spool/asterisk/monitor/$FILE.raw # присваиваем переменной значение выполненного скрипта по конвертации звука в текст и обрезаем не нужное TEXT=`python /opt/test/voice.py /var/spool/asterisk/monitor/$FILE.raw | sed -e "s/.*transcript"://" -e "s/}]}]}}//"` # отправляем письмо, включаем в письмо распознанный текст echo "новое уведомление от номера: $CALLERIDNUM $CALLERIDNAME $TEXT " | mutt -s "Это заголовок письма" -e "set [email protected] realname="я присылаю оповещения"" -a "/var/spool/asterisk/monitor/$FILE" -- $EMAIL

    Заключение

    Таким образом мы решили поставленную задачу. Надеюсь кому-то пригодится мой опыт. Буду рад комментариям (пожалуй только ради этого и стоит читать Хабр!). В будущем планирую реализовать на основе этого IVR с элементами голосового управления.

    Google Speech API - сервис распознавания голоса Google.

    Распознавание речи позволяет создавать системы автоматического обслуживания клиентов в тех случаях, когда не применимо управление с помощью тонального набора. В качестве примера можно рассмотреть сервис бронирования авиабилетов, который подразумевает выбор их большого числа городов. Тональное меню в таком сервисе не удобно, поэтому голосовое управление будет самым эффективным. Диалог между системой и абонентом может выглядеть следующим образом:

    Система: Здравствуйте. Куда вы хотите лететь? Абонент: Казань Система: Откуда вы хотите лететь? Абонент: Москва Система: Назовите дату вылета Абонент: 10 апреля
    • Голосовой навигации в многоуровневых меню IVR и автоматического соединения с нужным сотрудником
    • Распознавания адреса для доставки
    • Автоматической голосовой аутентификации пользователей при запросе персонализированной или конфиденциальной информации по телефону или через интернет
    • Справочной системы информационного обслуживания
    • Корпоративной системы голосового самообслуживания клиентов (запрос баланса, проверка лицевого счета, бронирование билетов)

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

    • Запись сообщения от абонента
    • Распознавание голоса и прием текстовых данных от сервиса
    • Анализ полученной информации и выполнение необходимых действий

    Для использования Google Speech API в вашей системе выполните следующие действия:

    Шаг 1. Скачайте и импортируйте сценарии в вашу систему Oktell .

    Скачать сценарий: (для версий Oktell старше 2.10)

    В архиве располагаются два сценария:

    После импорта сценариев в Oktell , сохраните их "На сервер "

    ВНИМАНИЕ: Google Speech API - это платный продукт. В сценарии (компонент Web-запроса GoogleVoice ) используется пробный ключ, который может быть заблокирован в следствие определенного числа запросов. При тестах максимальное количество запросов не обнаружено. Если вы хотите приобрести платную версию Google Speech API обратитесь в поддержку Google.

    Шаг 2. В модуле "Администрирование " - "Внутренние номера " добавьте внутренний номер с типом "Запуск IVR ". Выберите IVR-сценарий Google_Speech_API_main .

    The Web Speech API enables you to incorporate voice data into web apps. The Web Speech API has two parts: SpeechSynthesis (Text-to-Speech), and SpeechRecognition (Asynchronous Speech Recognition.)

    Web Speech Concepts and Usage

    The Web Speech API makes web apps able to handle voice data. There are two components to this API:

    • Speech recognition is accessed via the SpeechRecognition interface, which provides the ability to recognize voice context from an audio input (normally via the device"s default speech recognition service) and respond appropriately. Generally you"ll use the interface"s constructor to create a new SpeechRecognition object, which has a number of event handlers available for detecting when speech is input through the device"s microphone. The SpeechGrammar interface represents a container for a particular set of grammar that your app should recognise. Grammar is defined using JSpeech Grammar Format (JSGF .)
    • Speech synthesis is accessed via the SpeechSynthesis interface, a text-to-speech component that allows programs to read out their text content (normally via the device"s default speech synthesiser.) Different voice types are represented by SpeechSynthesisVoice objects, and different parts of text that you want to be spoken are represented by SpeechSynthesisUtterance objects. You can get these spoken by passing them to the SpeechSynthesis.speak() method.

    Web Speech API Interfaces

    Speech recognition

    SpeechRecognition The controller interface for the recognition service; this also handles the SpeechRecognitionEvent sent from the recognition service. SpeechRecognitionAlternative Represents a single word that has been recognised by the speech recognition service. SpeechRecognitionError Represents error messages from the recognition service. SpeechRecognitionEvent The event object for the result and nomatch events, and contains all the data associated with an interim or final speech recognition result. SpeechGrammar The words or patterns of words that we want the recognition service to recognize. SpeechGrammarList Represents a list of SpeechGrammar objects. SpeechRecognitionResult Represents a single recognition match, which may contain multiple SpeechRecognitionAlternative objects. SpeechRecognitionResultList Represents a list of SpeechRecognitionResult objects, or a single one if results are being captured in continuous mode.

    Speech synthesis

    SpeechSynthesis The controller interface for the speech service; this can be used to retrieve information about the synthesis voices available on the device, start and pause speech, and other commands besides. SpeechSynthesisErrorEvent Contains information about any errors that occur while processing SpeechSynthesisUtterance objects in the speech service. SpeechSynthesisEvent Contains information about the current state of SpeechSynthesisUtterance objects that have been processed in the speech service. SpeechSynthesisUtterance Represents a speech request. It contains the content the speech service should read and information about how to read it (e.g. language, pitch and volume.) SpeechSynthesisVoice Represents a voice that the system supports. Every SpeechSynthesisVoice has its own relative speech service including information about language, name and URI. Window.speechSynthesis Specced out as part of a interface called SpeechSynthesisGetter , and Implemented by the Window object, the speechSynthesis property provides access to the SpeechSynthesis controller, and therefore the entry point to speech synthesis functionality.

    Examples

    The Web Speech API repo on GitHub contains demos to illustrate speech recognition and synthesis.

    Specifications

    Specification Status Comment
    Web Speech API Draft Initial definition

    Browser compatibility

    SpeechRecognition

    https://github.com/mdn/browser-compat-data and send us a pull request.

    Desktop Mobile
    Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android Safari on iOS Samsung Internet
    SpeechRecognition

    Experimental

    Chrome Full support 33

    Prefixed Notes

    Full support 33

    Prefixed Notes

    Prefixed
    Edge ? Firefox No support No IE No support No Opera No support No Safari No support No WebView Android ? Chrome Android Full support Yes

    Prefixed Notes

    Full support Yes

    Prefixed Notes

    Prefixed Implemented with the vendor prefix: webkit Notes You"ll need to serve your code through a web server for recognition to work.
    Edge Mobile ? Firefox Android No support No Opera Android No support No Safari iOS No support No Samsung Internet Android ?

    Legend

    Full support Full support No support No support Compatibility unknown Compatibility unknown Experimental. Expect behavior to change in the future. Experimental. Expect behavior to change in the future. See implementation notes. See implementation notes. Requires a vendor prefix or different name for use.

    SpeechSynthesis

    The compatibility table on this page is generated from structured data. If you"d like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.

    Update compatibility data on GitHub

    Desktop Mobile
    Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android Safari on iOS Samsung Internet