Freeform распознавание речи в реальном времени и распознавание записей звонков

- КиТ :: Будь в СЕТИ!

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

Не так давно компания Google к системе распознавания речи. И мы, конечно же, этим воспользовались. Многие компании реализуют разные сценарии взаимодействия со своими клиентами с помощью Voximplant. Автоматизация с помощью распознавания речи и поиск в уже распознанном позволяют бизнесу тратить меньше сил на ручную работу и больше — на то, что действительно важно. Далее мы подробно расскажем про несколько основных кейсов, ради которых делали интеграцию, и про проблемы, с которыми столкнулись в процессе, а также приведем несколько примеров использования нового функционала.

Freeform — это сложно

Начнем с того, что freeform распознавание — это очень сложная техническая задача. Если на ограниченном словаре (например, адреса) получить качество распознавания в 90+% реально, то в случае freeform это уже практически недостижимая на сегодняшний день планка. Одно дело, когда человек что-то диктует, то есть на выходе получается структурированный текст. И совсем другое – телефонный разговор, где при общении возникает миллион дополнительных моментов, ухудшающих качество распознавания: от банальных междометий, кашля и индивидуальных особенностей речи до шумов, потерь пакетов и других, имеющих самую разную природу. К тому же распознавание в реальном времени требует достаточно приличных вычислительных мощностей, а нам нужно, чтобы все это хорошо масштабировалось и было доступно из облака. Можем вас заверить, что мы много и долго тестировали самые разнообразные решения для freeform распознавания. Каждый раз где-то чего-то не хватало, поэтому когда коллеги из Google анонсировали свое распознавание, мы с радостью побежали его тестировать.

Возможности Google Cloud Speech API

В настоящий момент находится в состоянии открытой беты. Существует ряд ограничений по количеству и скорости запросов, которые можно ему скармливать. Предлагается несколько вариантов работы с API: синхронный режим, асинхронный режим и стриминг. Синхронный режим позволяет отправлять куски аудио данных длительностью до минуты и на запрос возвращает ответ с результатом распознавания. Асинхронный режим позволяет обрабатывать большие файлы, но для этого их нужно загружать в Google Cloud Storage. Стриминг позволяет передавать данные частями и получать результат распознавания в реальном времени, то есть хорошо подходит для dictation и IVR. По аудио формату — 8/16 KHz. Поддерживается ряд разных кодеков в зависимости от режима: ulaw, flac, amr или просто PCM. Вендор рекомендует использовать 16 KHz и не использовать дополнительную обработку сигнала – это только ухудшает качество распознавания. Наш опыт показал, что нюансов, на самом деле, сильно больше. Например, лучше не пытаться распознавать куски длительностью более 20 секунд, если кусок слишком маленький, то можно на выходе не получить результат и т.д. Многие из этих проблем – следствие бета-версии. Думаем, что их поправят к релизу.

Кейс №1: Транскрибирование

Одним из самых востребованных кейсов является распознавание записей разговоров. Наверное, не нужно долго объяснять, почему это такая полезная функция. Поиск в тексте сильно проще поиска в аудио, поэтому любого рода анализ будет после преобразования в текст ускорен и упрощен. Для включения транскрибирования необходимо в функцию записи передать дополнительный параметр transcribe: Все сценарии обработки вызовов в Voximplant пишутся на JavaScript, поэтому тут все достаточно прозрачно. Данный код говорит, что после окончания записи будет необходимо отправить данные в специальную подсистему, которая займется взаимодействием с Google Speech API. И через какое-то время в истории звонков в дополнение к записи появится текстовый файл с результатами распознавания. Результат будет выглядеть так: К сожалению, пока API не выдает timestamps при распознавании, поэтому нельзя максимально точно разбить по времени, что и когда было сказано. Но даже так это очень хорошо.

Кейс №2. IVR

Ключевое слово «автоматизация». Сейчас только ленивый не пишет и не рассказывает про то, как изменится мир благодаря machine learning, AI и так далее. Наверное, мы не со всем согласны в этих рассказах. Особенно про AI. Но то что автоматизация позволяет ускорить и улучшить ряд процессов, мы отлично знаем, так как активно нашим клиентам автоматизировать процессы взаимодействия с их клиентами, на которые нужно раньше было тратить дорогое время сотрудников. Интеллектуальные IVRы с распознаванием речи будут лавинообразно распространяться в ближайшем будущем именно благодаря прогрессу в machine learning и в распознавании речи. В США, если вы позвоните в Department of Motor Vehicles, вас ждет долгое и увлекательное общение с их IVR, где попасть на живого человека практически невозможно. Максимум – можно попросить перезвонить вам позже. Если повезет, где-нибудь на следующей неделе. Мы не считаем, что такой уж крайний вариант – это правильно. Все-таки нужно давать возможность людям попасть на живого человека, если общение не складывается. Но тренд уже давно понятен.

В случае Voximplant у нас уже давно есть возможность такие сценарии реализовывать. Раньше точность распознавания в отдельных случаях была недостаточной. В случае API от Google можно задавать speech_context, что позволяет реализовывать сценарий с выбором из заранее заданного списка фраз и вариантов. Причем если человек скажет что-то не из контекста, то распознавание все равно сработает. Но если он скажет что-то из контекста, то оно сработает с гораздо более высокой точностью. Воспользоваться этой функцией в сценарии VoxEngine можно следующим образом: Кейс №3. Стриминг

По некоторым техническим причинам, связанным с работой самого бэкенда от Google, нам пришлось прилично пошаманить для реализации стриминг-режима. Надеемся, в ближайшем будущем такая необходимость отпадет. Итак, чтобы распознавать целый разговор в реальном времени (или просто большие части речи) потребуется модифицировать сценарий: Хочется отметить один нюанс: событие CaptureStarted возникает на основании фидбэка от API Google. Там сейчас VAD достаточно добрый, и эти события могут возникать не только на речь, но и на фоновый шум. Для того чтобы точно знать, когда пора останавливать распознавание в стриминг режиме при молчании, можно в дополнение использовать наш встроенный VAD: Демо

Было бы странным не дать вам потестировать все это хозяйство без лишних телодвижений (хотя мы, конечно, очень рекомендуем начать разрабатывать с помощью Voximplant :) Демо доступно по адресу . Понадобится браузер с поддержкой WebRTC / ORTC (Chrome/Firefox/Edge) и микрофон. Исходники этого чудо-демо доступны на .

ПодпискаБудь в СЕТИ! Новости социальных сетей - всегда актуальное
 
Группы: ВК | OK | Tg