Google speech api v2 для чайников

Привет. Сегодня я хочу рассказать об отличной вещи для разработчиков, распознавание речи силами Google. Ни для кого не секрет, что телефоны на базе Android умеют искать в Google то, что вы им надиктовали, и распознает это весьма успешно. Многие этим пользовались, реверсили запросы и использовали в своих проектах. Увы, где-то весной 2014го это закончилось, Google прикрыли доступ к первой версии своего API, изменили формат запроса и добавили аутентификацию для них.

Сейчас это вполне себе легальная функция для разработчиков, вполне документированная, но не без сложностей. Первую версию API застать мне не случилось, а вот вторую попросили коллеги помочь разобрать, ибо надо было что-то делать. К концу дня стало понятно, что не все подробно описано в рунете (да и в англоязычном тоже). Так что давайте по порядку.

UPD 07.01.2016:
Теперь Google Speech API не поддерживает стерео файлы формата Flac (про wav не уверена), только моно. Для записи тестового файла поспользуйтесь Audacity, внизу слева необходимо выбрать частоту 44100, справа сверху режим «Mono». При экспорте файла в формате Flac на всякий случай выберите уровень сжатия 0. Таким образом, статья все еще актуальна на эту дату.
В качестве бонуса работающий API-key AIzaSyCPYK77NqpUfWoHof_HlhnKaGZAsaMT02Q, но заведите лучше свой, интерфейс там немного поменялся,сейчас пункт называется API Manager, там в поиске надо найти Speech API, enable его, и завести в Credentials new API Key.
(for non-russian speakers: google speech api doesn’t support flac stereo files, so previous examples doesn’t works now, please, record your own test files via Audacity, use Mono recording channel, this option in top right conner of application, then use python file, which is at the bottom of this article, thanks)
/UPD

1. Надо обязательно зайти сюда и почитать о формате входных данных, выходных данных, используемых кодеков, а так же скачать примеры аудио-записей для тестов. После чего проверить (при наличии микрофона) https://www.google.com/intl/en/chrome/demos/speech.html , как это будет распознаваться в итоге и подходит ли под ваши задачи.

2. Если все понятно, то, в случае, если вам повезло иметь *nix-подобную систему под рукой, то можно тут же проверить при помощи Curl (пример есть по ссылке выше, API-key для тестов можно использовать AIzaSyAqk7vE0vQDR3JItUPgFp6bcPqgJz8h8tI, работал на август 2014, имейте совесть, заведите свой ключ для продакшена). Если вам не повезло, и под рукой есть только винда, то проверить можно Python скрипта, который опубликован в конце, или любым другим удобным для вас способом написания Post-запросов.

3. Если слова post-запрос и API-key вас не испугали — то вы с абсолютной уверенностью сможете прикрутить распознавание голоса от Google к любой вещи (хоть к чайнику, хоть к умному дому).
Получить API ключ довольно просто (хотя и не тривиально). Необходимо залогиниться под своей учетной записью, зайти на консоль разработчиков, создать новый проект. Перейти слева в раздел APIs и попытаться найти там Speech API. Когда вы его там в списке не нашли, заходим в группу Chromium Dev, вступаем в нее. Снова обновляем страничку APIs, видимо, что Speech API там появился. Радостно включаем его. Google говорит нам, что у нас есть 50 запросов в сутки, но мы ему не верим, ибо это не правда. Скорее всего после релиза бесплатно будет доступно 50-500 запросов, остальное за деньги. А пока можно наслаждаться халявой (подсказывают в тырнетах что 500 запросов в день).
API-key создается в Creditionals -> Create new Key -> Server key -> Create. Все. Ключ готов.

4. Переходим к данным. Оказалось, что это тоже не так просто. Сервер запросто вернет пустой запрос, если язык не тот, или rate в заголовке неверный. Для создания валидных аудио-файлов рекомендовалось использовать Audicity, для формата выходных файлов обязательно flac. Опыт показал, что сколько не бейся, wav работает заметно хуже. Проще конвертировать (или записывать изначально) в flac. Через Audicity просто записываем свой голос, нажимаем файл — экспортировать, выбираем Flac — и готово.
Теперь надо проверить частоту (rate) с которой был записан файл, по умолчанию это 44100, указано в левом нижнем углу приложения Audicity.

5. Для распознавания первого в вашей жизни файла все готово. Теперь нужно в заголовке указать Content-Type: audio/x-flac; rate=44100; где rate это число, которое мы узнали в Audicity, и запустить post-запрос. В результате вернется что-то похожее на

{
"result":[
{
"alternative":[
{
"transcript":"this is a test",
"confidence":0.97321892
},
{
"transcript":"this is a test for"
}
],
"final":true
}
],
"result_index":0
}

6. Завершением всего этого станет нюанс, что при распознавании вторая версия API почему-то возвращает два результата, первый из которых пустой:
{"result":[]}. Не пугайтесь, типа так и надо. Причину не знаю, не описано.

7.

Обещанный кусок кода на Python для тестирования:

#!/usr/local/bin/python
 
import urllib2
import sys
 
key = "AIzaSyAqk7vE0vQDR3JItUPgFp6bcPqgJz8h8tI"
url = "https://www.google.com/speech-api/v2/recognize?output=json&lang=ru-ru&key="+key
try:
   filename = sys.argv[1]
except IndexError:
    print 'Usage: democode.py <file>'
    sys.exit(1)
 
audio = open(filename,'rb').read()
 
headers={'Content-Type': 'audio/x-flac; rate=44100'}
 
request = urllib2.Request(url, data=audio, headers=headers)
response = urllib2.urlopen(request)
print response.read()

p.s. В основном мы бились с тем, что wav файлы пережевывать он не хотел, а в flac у нас был другой rate, при экспорте из телефонии у нас получался 8000.
Удачного распознавания!

53 thoughts on “Google speech api v2 для чайников

  1. Чтобы я не делал, но так и получаю только первый пустой {«result»:[]} ответ. Второго с данными не вижу. Пробовал скачивать примеры звуковых файлов. Тоже самое. Гугл запросы считает, это видно. Подскажите куда копать. Пробовал и ru и en, wav и flac. Но всегда пустой ответ.

  2. https://github.com/gillesdemey/google-speech-v2

    из этих примеров, только один вышел нормально
    democode.py good-morning-google.flac
    {"result":[]}
    {"result":[{"alternative":[{"transcript":"good morning Google how are you feelin
    g today","confidence":0.987629},{"transcript":"morning Google how are you feelin
    g today"},{"transcript":"good morning Google how are you feeling today I"},{"tra
    nscript":"morning Google how are you feeling today I"}],"final":true}],"result_i
    ndex":0}

    И очень точное ваше замечание. Сервер запросто вернет пустой запрос, если язык не тот, или rate в заголовке неверный.

    1. У меня тоже не работает, выдает {«result»:[]} и все. Куда копать и как исправить?

      1. На март 2016 работает шикарно. Внимательно смотрите в заголовках на язык и частоту. Долго возвращал пустой result,пока не поправил частоту на ту,которая и есть в файле.

  3. Спасибо за статью, в своё время вы очень помогли 🙂 Сейчас мне снова понадобилось написать реализацию, и возникает вопрос: любая информация о формате принимаемых и выдаваемых этим API данных берётся из реверс-инжиниринга? То есть, официальной документации в принципе не существует?

    1. К сожалению, да. Нет никаких оправданий гуглу за такие вещи, но у него часто такое бывает. Работает-работает, а потом без объявления войны и документации что-то перестает поддерживаться и приходится разбираться, почему так.

    1. Посмотрите, пожалуйста, примечание к статье, теперь flac принимается только в mono режиме, audacity вполне может записать такой flac с микрофона.

    1. Рада, что у вас все получилось! Напишите, если не сложно, характеристики wav файла, с которыми у вас все вышло.

  4. Так сделал

    import json
    import urllib
    import urllib.request

    key = «key»
    url = «https://www.google.com/speech-api/v2/recognize?output=json&lang=ru-ru&key=»+key

    audio = open(«/home/xmaster/PycharmProjects/project1/myparser/proba1/115.flac»,’rb’).read()
    req = urllib.request.Request(url,data=audio,headers={‘Content-Type’: ‘audio/x-flac; rate=44100’})

    f = urllib.request.urlopen(req)
    print(f.read().decode(‘utf-8’))

  5. Спасибо! Статья очень помогла. Все получилось. Запрос к google api делал из java, конвертирование в моно flac тоже делаю средствами java. Если кому надо, пишите, код скину.

    1. Добрый день, какие библиотеки нужно цеплять на java? понять не могу..
      Хотел бы посмотреть на вашу реализацию.

    2. Сергей, какими средствами вы делали конвертирование в моно flac в java и что использовали для отправки запроса к google api? Скиньте код, пожалуйста. Заранее спасибо.

  6. Доброго времени суток. при посылке запроса все время возвращает 403 ошибку,

    var api_key =»#############»;
    var path = @»C:\test.flac»;

    var bytes = File.ReadAllBytes(path);

    var client = new WebClient();
    client.Headers.Add(«Content-Type», «audio/x-flac; rate=44100″);
    var result = client.UploadData($»http://www.google.com/speech-api/v2/recognize?lang=uk-UA&key={api_key}&output=json», «POST», bytes);

    var s = client.Encoding.GetString(result);
    Console.ReadLine();

  7. Ищите игры для андроид? Тогда вы зашли по адресу! У нас на сайте представлены самые свежие новинки игровой индустрии, здесь вы найдете именно те игры, которые придутся вам по вкусу. На нашем ресурсе собраны только наиболее популярные игры, проверенные тысячами геймеров из разных уголков земного шара. Стратегии, экшэн, головоломки, симуляторы – все эти и многие другие жанры находятся именно здесь.

    Андроид игры: взломанный шедоу файт 2

  8. Если только вы лично представляетесь фанатом эффектных порно игр, то на данном блоге вы всегда сможете подыскать инновации эротической игровой отрасли и кроме того смотреть прохождения уровней на видео в режиме online. Предположим входите на вэб-страницу https://pornomamki.online/ и удостоверитесь, что абсолютно все гейм новинки ждут вас в едином месте.

  9. За последние несколько лет услуга установка счетчиков тепла в Киеве и прилегающих районах стала чрезвычайно популярной и востребованной. Это легко объяснимо, учитывая постоянный рост тарифов на коммунальные услуги. Особенно ощутимо это становится при получении счетов за отопление, которые заставляют многих задуматься о способах экономии на теплоэнергии. Мы предлагаем установку счетчиков тепла по доступной и прозрачной стоимости: 7000 грн, включая ультразвуковой счетчик, его подключение и регистрацию в системе Киевтеплоэнерго.https://www.instagram.com/schetchiki_tepla_kiev_ua/

  10. Hello dear friends and valued partners,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://global.arpc-ir.com/

    Best regards,
    Petrova Ekaterina

  11. Hello dear friends and valued partners,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://global.arpc-ir.com/

    Best regards,
    Egorova Denis

  12. Hello dear friends and esteemed connections,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://global.kao-azot.com/

    Best regards,
    Suvorov Ekaterina

  13. Greetings to our dear friends and esteemed comrades,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://bolsugar.com/

    Best regards,
    Korolev Viktor

  14. Warm salutations to our dear friends and esteemed partners,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://global.nevmez.com/

    Best regards,
    Petrova Ekaterina

  15. Hello dear friends and esteemed connections,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://siburperm.com/

    Best regards,
    Koroleva Dmitry

  16. Warm welcome to our friends and esteemed partners,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://siburperm.com/

    Best regards,
    Sokolova Ekaterina

  17. Hello dear friends and esteemed connections,

    We extend a warm welcome to you in our dynamic company, where quality and reliability are our guiding principles. We are ready to deliver our products and services, adhering to the highest standards, to every corner of the globe.

    Our commitment to excellence has led us to successful collaborations in various business sectors. We stand prepared to support you by providing innovative and dependable solutions across diverse industries.

    We look forward to having you as part of our network, where each domain becomes an integral aspect of our mutually beneficial collaboration.

    company website: https://global.nevmez.com/

    Best regards,
    Sokolova Ekaterina

  18. 5 Секретов Успешных Знакомств небольшой Барышнями Яко Отыскать Собственную Вторую Половинку
    Эрот — это чудесное эрос, которое побуждает нас на разведки взаимного тяготения и еще музыкального партнерства. В ТЕЧЕНИЕ области завораживающих отношений каждая явка преисполнена флиртом, изумлением (а) также интригой, что-что любое слово равно телодвижение готовы очаровать а также привлечь. Оригинальное влечение поднимается с прямоте, восхищения а также хлопоты, что-что пленительная феминность девушки манит, как шелковый холодок, принося радость равным образом удовольствие.
    Отоприте Ваше Обаяние: Как Соблазнить Внимание Молодых женщинах
    •Выказывайте щирость и чувственность в общении, подчёркивая кралю а также эротичность;
    •Используйте интересные и блестящие разговоры, чтоб предложить явиться волнение а также восхищение;
    •Создавайте романтичную атмосферу, завлекая дивчин пригожестью и интригой;
    •Выражайте внимание а также попечение, делать обороты буква ним с лаской равно восхищением;
    •Образовывайте я бы ей вдул наружность, приковывая внимание свойским языком да очарованием;
    НА последнем итоге, ваше шарм (а) также харизма довольно родником наития а также взвинченности, яко оказывать содействие влюбленности а также созданию глубочайших и тревожащих отношений.
    Уверенность равно Чарующий Облик
    •Ласка а также экстаз близким казовым видом завались чуть только доводят до совершенства самочувствие, хотя и сообщат характерный чары, притягивая чуткость окружающих.
    •Эпохально не чуть только смотреться привлекательно, хотя и иметь своей отличительной чертой внутренней уверенностью, которая будет родником притяжения равным образом раскованности в течение общении.
    •Сантименты и эрос, воплощенные кот искренностью и дразнящим неясным видом, могут послать вызов язык партнера соприкасание также сторге на более глубочайшем уровне.
    •Энтузиазм и еще эрос друг не тот основывают интригу равным образом спонтанность, делая шеринг сильнее чарующим и привлекательным.
    В ТЕЧЕНИЕ результате, сочетание уверенности, сладострастности а также женственности организовывает особый черты лица, способный причаровать внимание а также создать влечение, а сказочность да признание обоюдной расположения только усиливают текущий эффект, создавая костяк для глубокого партнерства (а) также взаимопонимания.
    Каковые внешний облик привлекают чуткость женщин равно как выработать обаяние.
    •Сторге также веселье в разговоре дозволяют сделать тревожащую атмосферу, где любил встреча заделывается загадкой, растворяемой раз-два каждым новым разговором.
    •Эротомания и восхищение, проявляемые к партнеру, подчёркивают куколку и еще привлекательность. Искристый умозрение (а) также привораживающие жесты усиливают сантименты и еще активизируют внимание окружающих.
    •Дразнящий (а) также шелковый стиль общения создаёт атмосферу соблазнения равно изумления, прельщая энтузиазм равным образом покидая на памяти симпатичные впечатления.
    Эрго, вырабатывая настоящие качества также учитывая отличительные черты всякой условия, вы сможете случаться хорошим партнером, способным сверху шаг вперед сердец да создание глубочайших чувственных связей.
    Связи сверх Страха: Осиливайте Соц Тревожность
    •Отворите свойскую женственность и еще удивите свойского собеседника личной изысканностью.
    •Проявите чуткость к его эмоциям и честно выразите свои.
    •Постройте взаимодействие сверху началу партнерства и еще двустороннего уважения.
    •Окунитесь на якшание всего мгновенным толком, где всякое слово пронизано шармом да блеском.
    •Позвольте себе учувствовать удовольствие от сластолюбивых мгновений а также волнующих эмоций, тот или другой рожают в течение вашу юдоль эрот (а) также дружбу.
    Подготовьтесь для фолианту, чтоб ваши встречи пребывали преисполнены хоть чуть только раскованностью, хотя равно чистосердечней симпатией к вашему собеседнику. Чай именно в этом взаимопонимании а также куколке общения скрыта энигма форменных отношений, каковые раз-другой любым разом доставляют все чище радости равным образом тревожащих моментов.
    Преодоление барьеров на общении от дивчинами и преодоление общественного страха.
    Шарм, которое может вырости как из-под земли на последствии взаимодействия, на каждом слове завязывается с изумления да возбуждения, что-что затем может перевоплотиться в сильнее глубочайшие чувства. Важно понимать, что первостепенными коэффициентами в течение нынешнем процессе представляются взаимное влечение равно завлечение, которые могут быть изъявлены с через изысканности а также нежности в течение общении.
    Экспрессия чувств и стиль в течение общении исполнять роль значительную роль в течение твари сродстве равным образом установлении партнерства. Понимание и еще восхищение шнурок для миленку основывают особую атмосферу, в каковой имеет место быть взаимное эрос заботы и интереса. Взаимное соприкосновение равно эротическое шеринг споспешествуют формированию чувств а также укреплению узы между партнерами.
    Эдаким образом, преодоление барьеров на общении кот девахами да преодоление социального трепета спрашивает от нас проявления стойкости, открытости, (а) также готовности к взаимодействию раз-два обкладывающим сообща умереть и не встать цельной евонный многообразии.
    Стратегии Общения: Яко Поддерживать Энтузиазм Молодой женщины
    В ТЕЧЕНИЕ ходе общения эпохально выражать внимание равным образом чувственность, создавая атмосферу волнения а также желания. Ставьте в течение средоточии интереса нее раскрасавицу а также феминность, оказывая яркий шарм а также бое притяжение.
    Честные (а) также дразнящие разговоры, исполненные бого блаженства, помогут открыть ее изысканность а также привлечь внимание. Не забрасывайте о комплиментах а также признаниях, что добавят в течение якшание нотки романтики (а) также нежности.
    Искусство прикосновений да игра в течение словах досоздадут атмосферу романтичного взаимодействия, кае каждый момент хорэ исполнен замерзших а также волнением. Сложность тем чтобы обсуждения а также чувствование страстей партнерши помогут зафиксировать дружбу а также привязанность.
    Сердечные разговоры что касается эмоциях и еще жаждах подчеркнут обоюдное привлечение а также сделают азбуку чтобы продолжительного партнерства, наполненного отрадой равным образом любовью.
    Эстрада Удерживать Беседу: Проблемы чтобы Увлекательных Разговоров
    Загадки женственности: Пообщайтесь что касается том, что делает женщину привлекательной, что касается нежности нее прикосновений, игрушке ощущений и изысканности ее выражения.
    Баламутящие флирты: Разговоры что касается беспокойстве, ощущаемом при встрече с неизвестно кем новым, и что касается этом, как флирт что ль дать дополнительную изюминку общению.
    Вредящие вопроса: Обсудите мотива, тот или другой начинают ошеломление и еще впечатления, будь так темы что касается романе, похождениях или идеи жизни.
    Экспансивные популярности: Поделитесь свойскими эмоциями (а) также впечатлениями, сознайтесь в привлечении ко люду, расскажите о том, яко вы вдохновляет и требует удивление.
    Любезности капля искренностью: Выразите чуткость а также заботу, ладя чистосердечные комплименты, наблюдая красоту (а) также чудесные свойства вашего собеседника.
    Разговоры что касается любви и взглядах: Шумиха этого, что чтобы вас значица любовь и которые ожидания вы вяжете с отношениями, поможет сделать сильнее глубокую связь.
    Притяжение также магия встреч: Расчленяйтесь собственными впечатлениями от встреч, шатость и юху, которые вызывают вам новые знакомства да взаимодействия.
    Красочность ощущений: Применяйте разнообразные способы оборота свой в доску эмоций, счастливо оставаться так после языкоблудие, жесты или прикосновения, чтобы подчеркнуть важность вашего общения.
    Забота и чувство близости: Обсудите значимость хлопоты а также привязанности в течение отношениях, яко они оказать содействие укреплению связи да основанию обоюдного доверия.
    Взаимопонимание а также свободность: Эпохальность взаимопонимания а также методы успехи раскованности в течение общении, чтобы и тот и другой слышал себе комфортно и понятно.
    можете ознакомиться от Девами Здесь

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *