Меню Рубрики

Скачать перевод фильмов с помощью распознавания речи. Разбираемся с современными системами распознавания речи в Linux

  • Tutorial

В этой статье я хочу рассмотреть основы такой интереснейшей области разработки ПО как Распознавание Речи. Экспертом в данной теме я, естественно, не являюсь, поэтому мой рассказ будет изобиловать неточностями, ошибками и разочарованиями. Тем не менее, главной целью моего «труда», как можно понять из названия, является не профессиональный разбор проблемы, а описание базовых понятий, проблем и их решений. В общем, прошу всех заинтересовавшихся пожаловать под кат!

Пролог

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

Таким вот образом механические колебания превращаются в набор чисел, пригодный для обработки на современных ЭВМ.

Отсюда следует, что задача распознавания речи сводится к «сопоставлению» множества численных значений (цифрового сигнала) и слов из некоторого словаря (русского языка, например).

Давайте разберемся, как, собственно, это самое «сопоставление» может быть реализовано.

Входные данные

Допустим у нас есть некоторый файл/поток с аудиоданными. Прежде всего нам нужно понять, как он устроен и как его прочесть. Давайте рассмотрим самый простой вариант - WAV файл.

Формат подразумевает наличие в файле двух блоков. Первый блок - это заголовка с информацией об аудиопотоке: битрейте, частоте, количестве каналов, длине файла и т.д. Второй блок состоит из «сырых» данных - того самого цифрового сигнала, набора значений амплитуд.

Логика чтения данных в этом случае довольно проста. Считываем заголовок, проверяем некоторые ограничения (отсутствие сжатия, например), сохраняем данные в специально выделенный массив.

Распознавание

Чисто теоретически, теперь мы можем сравнить (поэлементно) имеющийся у нас образец с каким-нибудь другим, текст которого нам уже известен. То есть попробовать «распознать» речь… Но лучше этого не делать:)

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

Поэтому мы пойдем несколько иным путём.

Фреймы

Первым делом разобьём наши данные по небольшим временным промежуткам - фреймам. Причём фреймы должны идти не строго друг за другом, а “внахлёст”. Т.е. конец одного фрейма должен пересекаться с началом другого.

Фреймы являются более подходящей единицей анализа данных, чем конкретные значения сигнала, так как анализировать волны намного удобней на некотором промежутке, чем в конкретных точках. Расположение же фреймов “внахлёст” позволяет сгладить результаты анализа фреймов, превращая идею фреймов в некоторое “окно”, движущееся вдоль исходной функции (значений сигнала).

Опытным путём установлено, что оптимальная длина фрейма должна соответствовать промежутку в 10мс, «нахлёст» - 50%. С учётом того, что средняя длина слова (по крайней мере в моих экспериментах) составляет 500мс - такой шаг даст нам примерно 500 / (10 * 0.5) = 100 фреймов на слово.

Разбиение слов

Первой задачей, которую приходится решать при распознавании речи, является разбиение этой самой речи на отдельные слова. Для простоты предположим, что в нашем случае речь содержит в себе некоторые паузы (промежутки тишины), которые можно считать “разделителями” слов.

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

  • задать константой (сработает, если исходный сигнал всегда генерируется при одних и тех же условиях, одним и тем же способом);
  • кластеризовать значения сигнала, явно выделив множество значений соответствующих тишине (сработает только если тишина занимает значительную часть исходного сигнала);
  • проанализировать энтропию;

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

  • предположим, что наш сигнал пронормирован и все его значения лежат в диапазоне [-1;1];
  • построим гистограмму (плотность распределения) значений сигнала фрейма:
рассчитаем энтропию, как ;

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

Тем не менее проблемы на этом не заканчиваются:(Энтропия может проседать по середине слова (на гласных), а может внезапно вскакивать из-за небольшого шума. Для того, что бы бороться с первой проблемой, приходится вводить понятие “минимально расстояния между словами” и “склеивать” близ лежачие наборы фреймов, разделённые из-за проседания. Вторая проблема решается использованием “минимальной длины слова” и отсечением всех кандидатов, не прошедших отбор (и не использованных в первом пункте).

Если же речь в принципе не является “членораздельной”, можно попробовать разбить исходный набор фреймов на определённым образом подготовленные подпоследовательности, каждая из которых будет подвергнута процедуре распознавания. Но это уже совсем другая история:)

И так, мы у нас есть набор фреймов, соответствующих определённому слову. Мы можем пойти по пути наименьшего сопротивления и в качестве численной характеристики фрейма использовать средний квадрат всех его значений (Root Mean Square). Однако, такая метрика несёт в себе крайне мало пригодной для дальнейшего анализа информации.

Вот тут в игру и вступают Мел-частотные кепстральные коэффициенты (Mel-frequency cepstral coefficients). Согласно Википедии (которая, как известно, не врёт) MFCC - это своеобразное представление энергии спектра сигнала. Плюсы его использования заключаются в следующем:

  • Используется спектр сигнала (то есть разложение по базису ортогональных [ко]синусоидальных функций), что позволяет учитывать волновую “природу” сигнала при дальнейшем анализе;
  • Спектр проецируется на специальную mel-шкалу , позволяя выделить наиболее значимые для восприятия человеком частоты;
  • Количество вычисляемых коэффициентов может быть ограничено любым значением (например, 12), что позволяет “сжать” фрейм и, как следствие, количество обрабатываемой информации;

Давайте рассмотрим процесс вычисления MFCC коэффициентов для некоторого фрейма.

Представим наш фрейм в виде вектора , где N - размер фрейма.

Разложение в ряд Фурье

Первым делом рассчитываем спектр сигнала с помощью дискретного преобразования Фурье (желательно его “быстрой” FFT реализацией).

То есть результатом будет вектор следующего вида:

Важно понимать, что после этого преобразования по оси Х мы имеем частоту (hz) сигнала, а по оси Y - магнитуду (как способ уйти от комплексных значений):

Расчёт mel-фильтров

Начнём с того, что такое mel. Опять же согласно Википедии, mel - это “психофизическая единица высоты звука”, основанная на субъективном восприятии среднестатистическими людьми. Зависит в первую очередь от частоты звука (а так же от громкости и тембра). Другими словами, эта величина, показывающая, на сколько звук определённой частоты “значим” для нас.

Преобразовать частоту в мел можно по следующей формуле (запомним её как «формула-1»):

Обратное преобразование выглядит так (запомним её как «формула-2»):

График зависимости mel / частота:

Но вернёмся к нашей задаче. Допустим у нас есть фрейм размером 256 элементов. Мы знаем (из данных об аудиоформате), что частота звука в данной фрейме 16000hz. Предположим, что человеческая речь лежит в диапазоне от hz. Количество искомых мел-коэффициентов положим M = 10 (рекомендуемое значение).

Для того, что бы разложить полученный выше спектр по mel-шкале, нам потребуется создать “гребёнку” фильтров. По сути, каждый mel-фильтр это треугольная оконная функция , которая позволяет просуммировать количество энергии на определённом диапазоне частот и тем самым получить mel-коэффициент. Зная количество мел-коэффициентов и анализируемый диапазон частот мы можем построить набор таких вот фильтров:

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

Но мы опять отвлеклись. И так для нашего случая диапазон интересующих нас частот равен . Согласно формуле-1 в на мел-шкале этот диапазон превращается в .

m[i] =

Обратите внимание, что на мел-шкале точки расположены равномерно. Переведём шкалу обратно в герцы с помощью формулы-2:

h[i] =

Как видите теперь шкала стала постепенно растягиваться, выравнивая тем самым динамику роста “значимости” на низких и высоких частотах.

Теперь нам нужно наложить полученную шкалу на спектр нашего фрейма. Как мы помним, по оси Х у нас находится частота. Длина спектра 256 - элементов, при этом в него умещается 16000hz. Решив нехитрую пропорцию можно получить следующую формулу:

f(i) = floor((frameSize+1) * h(i) / sampleRate)

Что в нашем случае эквивалентно

f(i) = 4, 8, 12, 17, 23, 31, 40, 52, 66, 82, 103, 128

Вот и всё! Зная опорные точки на оси Х нашего спектра, легко построить необходимые нам фильтры по следующей формуле:

Применение фильтров, логарифмирование энергии спектра

Применение фильтра заключается в попарном перемножении его значений со значениями спектра. Результатом этой операции является mel-коэффициент. Поскольку фильтров у нас M, коэффициентов будет столько же.

Однако, нам нужно применить mel-фильтры не к значениям спектра, а к его энергии. После чего прологарифмировать полученные результаты. Считается, что таким образом понижается чувствительность коэффициентов к шумам.

Косинусное преобразование

Дискретное косинусное преобразование (DCT) используется для того, что бы получить те самые “кепстральные” коэффициенты. Смысл его в том, что бы “сжать” полученные результаты, повысив значимость первых коэффициентов и уменьшив значимость последних.

В данном случае используется DCTII без каких-либо домножений на (scale factor).

Теперь для каждого фрейма мы имеем набор из M mfcc-коэффициентов, которые могут быть использованы для дальнейшего анализа.

Примеры код для вышележащих методов можно найти .

Алгоритм распознавания

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

В любом случае немало предпочтений отдаётся именно СММ , и именно их реализацию я собираюсь добавить в свой код… в будущем:)

На данный момент, предлагаю остановится на гораздо менее эффективном, но в разы более простом способе.

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

Теперь возьмем в руки айфон/андроид и пройдёмся по L коллегам с просьбой продиктовать эти слова под запись. Далее поставим в соответствие (в какой-нибудь локальной БД или простом файле) каждому слову L наборов mfcc-коэффициентов соответствующих записей.

Это соответствие мы назовём “Модель”, а сам процесс - Machine Learning! На самом деле простое добавление новых образцов в базу имеет крайне слабую связь с машинным обучением… Но уж больно термин модный:)

Теперь наша задача сводится к подбору наиболее “близкой” модели для некоторого набора mfcc-коэффициентов (распознаваемого слова). На первый взгляд задачу можно решить довольно просто:

  • для каждой модели находим среднее (евклидово) расстояние между идентифицируемым mfcc-вектором и векторами модели;
  • выбираем в качестве верной ту модель, среднее расстояние до которой будет наименьшим;

Однако, одно и тоже слово может произносится как Андреем Малаховым, так и каким-нибудь его эстонским коллегой. Другими словами размер mfcc-вектора для одного и того же слова может быть разный.

К счастью, задача сравнения последовательностей разной длины уже решена в виде Dynamic Time Warping алгоритма. Этот алгоритм динамическо программирования прекрасно расписан как в буржуйской Wiki , так и на православном Хабре .

Единственное изменение, которое в него стоит внести - это способ нахождения дистанции. Мы должны помнить, что mfcc-вектор модели - на самом деле последовательность mfcc-“подвекторов” размерности M, полученных из фреймов. Так вот, DTW алгоритм должен находить дистанцию между последовательностями эти самых “подвекторов” размерности M. То есть в качестве значений матрицы расстояний должны использовать расстояния (евклидовы) между mfcc-“подвекторами” фреймов.

Эксперименты

У меня не было возможности проверить работу данного подхода на большой “обучающей” выборке. Результаты же тестов на выборке из 3х экземпляров для каждого слова в несинтетических условиях показали мягко говоря нелучший результат - 65% верных распознаваний.

Тем не менее моей задачей было создание максимального простого приложения для распознавания речи. Так сказать “proof of concept” :) Добавить метки

Человека всегда привлекала идея управлять машиной естественным языком. Возможно, это отчасти связано с желанием человека быть НАД машиной. Так сказать, чувствовать свое превосходство. Но основной посыл - это упрощение взаимодействия человека с искусственным интеллектом. Управление голосом в Linux с переменным успехом реализуется без малого уже четверть века. Давай разберемся в вопросе и попробуем сблизиться с нашей ОС настолько, насколько это только возможно.

Суть дела

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

Следует различать собственно системы распознавания речи (перевод речи в текст или в команды), такие как, например, CMU Sphinx, Julius, а также приложения на основе этих двух движков, и голосовые ассистенты, ставшие популярными с развитием смартфонов и планшетов. Это, скорее, побочный продукт систем распознавания речи, дальнейшее их развитие и воплощение всех удачных идей распознавания голоса, применение их на практике. Для Linux-десктопов таких пока мало.

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

Что было раньше

Исторически сложилось так, что все системы работы с речью в Linux развивались не спеша и скачкообразно. Причина не в криворукости разработчиков, а в высоком уровне вхождения в среду разработки. Написание кода системы для работы с голосом требует высокой квалификации программиста. Поэтому, перед тем как начать разбираться с системами работы с речью в Linux, необходимо сделать небольшой экскурс в историю. Была когда-то в IBM такая чудесная операционная система - OS/2 Warp (Merlin). Вышла она в сентябре далекого уже 1996 года. Кроме того, что она обладала очевидными преимуществами перед всеми остальными операционками, OS/2 была укомплектована весьма продвинутой системой распознавания речи - IBM ViaVoice . Для того времени это было очень круто, учитывая, что ОС работала на системах с 486-м процессором с объемом ОЗУ от 8 Мбайт (!).

Как известно, OS/2 проиграла битву Windows, однако многие ее компоненты продолжили существовать независимо. Одним из таких компонентов стала та самая IBM ViaVoice, превратившаяся в самостоятельный продукт. Так как IBM всегда любила Linux, ViaVoice была портирована на эту ОС, что дало детищу Линуса Торвальдса самую передовую для своего времени систему распознавания речи.

К сожалению, судьба ViaVoice сложилась не так, как хотели бы линуксоиды. Сам движок распространялся бесплатно, но его исходники оставались закрытыми. В 2003 году IBM продала права на технологию канадо-американской компании Nuance. Nuance, разработавшая, пожалуй, самый успешный коммерческий продукт для распознавания речи - Dragon Naturally Speeking , здравствует и ныне. На этом бесславная история ViaVoice в Linux практически закончилась. За то короткое время, что ViaVoice была бесплатной и доступной линуксоидам, к ней разработали несколько интерфейсов, таких, например, как Xvoice. Однако проект давно заброшен и ныне практически неработоспособен.

INFO

Самое сложное звено в машинном распознавании речи - естественный человеческий язык.

Что сегодня?

Сегодня все гораздо лучше. В последние годы, после открытия исходников Google Voice API, ситуация с развитием систем распознавания речи в Linux значительно улучшилась, выросло качество распознавания. Например, проект Linux Speech Recognition на основе Google Voice API показывает очень неплохие результаты для русского языка. Все движки работают примерно одинаково: сначала звук с микрофона устройства юзера попадает в систему распознавания, после чего либо голос обрабатывается на локальном устройстве, либо запись отправляется на удаленный сервер для дальнейшей обработки. Второй вариант больше подходит для смартфонов или планшетов. Собственно, именно так и работают коммерческие движки - Siri, Google Now и Cortana.

Из всего многообразия движков для работы с человеческим голосом можно выделить несколько активных на данный момент.

WARNING

Установка многих из описанных систем распознавания речи - нетривиальная задача!

CMU Sphinx

Большая часть разработки CMU Sphinx ведется в университете Карнеги - Меллона. В разное время над проектом работали и Массачусетский технологический институт, и покойная ныне корпорация Sun Microsystems. Исходники движка распространяются под лицензией BSD и доступны как для коммерческого, так и для некоммерческого использования. Sphinx - это не пользовательское приложение, а, скорее, набор инструментов, который можно применить в разработке приложений для конечных пользователей. Sphinx сейчас - это крупнейший проект по распознаванию речи. Он состоит из нескольких частей:

  • Pocketsphinx - небольшая быстрая программа, обрабатывающая звук, акустические модели, грамматики и словари;
  • библиотека Sphinxbase, необходимая для работы Pocketsphinx;
  • Sphinx4 - собственно библиотека распознавания;
  • Sphinxtrain - программа для обучения акустическим моделям (записям человеческого голоса).

Проект развивается медленно, но верно. И главное - его можно использовать на практике. Причем не только на ПК, но и на мобильных устройствах. К тому же движок очень хорошо работает с русской речью. При наличии прямых рук и ясной головы можно настроить распознавание русской речи с помощью Sphinx для управления домашней техникой или умным домом. По сути, можно обычную квартиру превратить в умный дом, чем мы и займемся во второй части этого обзора. Реализации Sphinx имеются для Android, iOS и даже Windows Phone. В отличие от облачного способа, когда работа по распознаванию речи ложится на плечи серверов Google ASR или Яндекс SpeechKit, Sphinx работает точнее, быстрее и дешевле. И полностью локально. При желании можно научить Sphinx русской языковой модели и грамматике пользовательских запросов. Да, придется немного потрудиться при установке. Равно как и настройка голосовых моделей и библиотек Sphinx - занятие не для новичков. Так как основа CMU Sphinx - библиотека Sphinx4 - написана на Java, можно включать ее код в свои приложения для распознавания речи. Конкретные примеры использования будут описаны во второй части нашего обзора.

VoxForge

Особо выделим понятие речевого корпуса. Речевой корпус - это структурированное множество речевых фрагментов, которое обеспечено программными средствами доступа к отдельным элементам корпуса. Иными словами - это набор человеческих голосов на разных языках. Без речевого корпуса невозможна работа ни одной системы распознавания речи. В одиночку или даже небольшим коллективом создать качественный открытый речевой корпус сложно, поэтому сбором записей человеческих голосов занимается специальный проект - VoxForge .

Любой, у кого есть доступ к интернету, может поучаствовать в создании речевого корпуса, просто записав и отправив фрагмент речи. Это можно сделать даже по телефону, но удобней воспользоваться сайтом. Конечно, кроме собственно аудиозаписи, речевой корпус должен включать в себя дополнительную информацию, такую как фонетическая транскрипция. Без этого запись речи бессмысленна для системы распознавания.


HTK, Julius и Simon

HTK - Hidden Markov Model Toolkit - это инструментарий для исследования и разработки средств распознавания речи с использованием скрытых марковских моделей, разрабатывается в Кембриджском университете под патронажем Microsoft (Microsoft когда-то выкупила этот код у коммерческого предприятия Entropic Cambridge Research Laboratory Ltd, а затем вернула его Кембриджу вместе с ограничивающей лицензией). Исходники проекта доступны всем желающим, но использование кода HTK в продуктах, предназначенных для конечных пользователей, запрещено лицензией.

Однако это не означает, что HTK бесполезен для Linux-разработчиков: его можно использовать как вспомогательный инструмент при разработке открытых (и коммерческих) средств распознавания речи, что и делают разработчики открытого движка Julius, который разрабатывается в Японии. Julius лучше всего работает с японским языком. Великий и могучий тоже не обделен, ведь в качестве голосовой базы данных используется все тот же VoxForge.

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.

Для того, чтобы распознать речь и перевести её из аудио или видео в текст , существуют программы и расширения (плагины) для браузеров. Однако зачем всё это, если есть онлайн сервисы? Программы надо устанавливать на компьютер, более того, большинство программ распознавания речи далеко не бесплатны.


Большое число установленных в браузере плагинов сильно тормозит его работу и скорость серфинга в интернет. А сервисы, о которых сегодня пойдет речь, полностью бесплатны и не требуют установки – зашел, попользовался и ушел!

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

Speechpad.ru

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

  • поддержку 7 языков (русский, украинский, английский, немецкий, французский, испанский, итальянский)
  • загрузку для транскрибации аудио или видео файла (поддерживаются ролики с YouTube)
  • синхронный перевод на другой язык
  • поддержку голосового ввода знаков препинания и перевода строки
  • панель кнопок (смена регистра, перевод на новую строку, кавычки, скобки и т.п.)
  • наличие персонального кабинета с историей записей (опция доступна после регистрации)
  • наличие плагина к Google Chrome для ввода текста голосом в текстовом поле сайтов (называется «Голосовой ввод текста — Speechpad.ru»)

Dictation.io

Второй онлайн сервис перевода речи в текст. Иностранный сервис, который между тем, прекрасно работает с русским языком, что крайне удивительно. По качеству распознавания речи не уступает Speechpad, но об этом чуть позже.

Основной функционал сервиса:

  • поддержка 30 языков, среди которых присутствуют даже венгерский, турецкий, арабский, китайский, малайский и пр.
  • автораспознавание произношения знаков препинания, перевода строки и пр.
  • возможность интеграции со страницами любого сайта
  • наличие плагина для Google Chrome (называется «VoiceRecognition»)

В деле распознавания речи самое важное значение имеет именно качество перевода речи в текст. Приятные «плюшки» и вохможности – не более чем хороший плюс. Так чем же могут похвастаться в этом плане оба сервиса?

Сравнительный тест сервисов

Для теста выберем два непростых для распознавания фрагмента, которые содержат нечасто употребляемые в нынешней речи слова и речевые обороты. Для начала читаем фрагмент поэмы «Крестьянские дети» Н. Некрасова.

Ниже представлен результат перевода речи в текст каждым сервисом (ошибки обозначены красным цветом):

Как видим, оба сервиса практически с одинаковыми ошибками справились с распознаванием речи. Результат весьма неплохой!

Теперь для теста возьмем отрывок из письма красноармейца Сухова (к/ф «Белое солнце пустыни»):

Отличный результат!

Как видим, оба сервиса весьма достойно справляются с распознаванием речи – выбирайте любой! Похоже что они даже используют один и тот же движок — уж слижком схожие у них оказались допущенные ошибки по результатам тестов). Но если Вам необходимы дополнительные функции типа подгрузки аудио / видео файла и перевода его в текст (транскрибация) или синхронного перевода озвученного текста на другой язык, то Speechpad будет лучшим выбором!


Кстати вот как он выполнил синхронный перевод фрагмента поэмы Некрасова на английский язык:

Ну а это краткая видео инструкция по работе со Speechpad, записанная самим автором проекта:

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

«Хотелось бы сразу сказать, что с сервисами распознавания имею дело впервые. И поэтому расскажу о сервисах, с обывательской точки зрения» - отметил наш эксперт – «для тестирования распознавания я использовал пользовался тремя инструкциями: Google, Yandex и Azure».

Google

Небезызвестная IT-корпорация предлагает протестировать свой продукт Google Cloud Platform в режиме онлайн. Опробовать работу сервиса может бесплатно любой желающий. Сам продукт удобен и понятен в работе.

Плюсы:

  • поддержка более чем 80 языков;
  • быстрая обработка имен;
  • качественное распознавание в условиях плохой связи и при наличии посторонних звуков.

Минусы :

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

Yandex

Распознавание речи от Yandex предоставляется в нескольких вариантах:

  • Облако
  • Библиотека для доступа с мобильных приложений
  • «Коробочная» версия
  • JavaScript API

Но будем объективными. Нас, в первую очередь, интересует не разнообразие возможностей использования, а качество распознавания речи. Поэтому, мы воспользовались пробной версией SpeechKit .

Плюсы:

  • простота в использовании и настройке;
  • хорошее распознавание текста на Русском языке;
  • система выдаёт несколько вариантов ответов и через нейронные сети пытается найти самый похожий на правду вариант.

Минусы:

  • при потоковой обработке некоторые слова могут определяться некорректно.

Azure

Система Azure разработана компанией Microsoft. На фоне аналогов она сильно выделяется за счёт цены. Но, будьте готовы столкнуться с некоторыми трудностями. Инструкция, представленная на официальном сайте то ли неполная, то ли устаревшая. Адекватно запустить сервис нам так и не удалось, поэтому пришлось воспользоваться сторонним окном запуска. Однако, даже здесь для тестирования вам понадобится ключ от сервиса Azure.

Плюсы:

  • относительно других сервисов, Azure очень быстро обрабатывает сообщения в режиме реального времени.

Минусы:

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

Итоги обзора:

Взвесив все плюсы и минусы мы остановились на Яндексе. SpeechKit дороже чем Azure, но дешевле чем Google Cloud Platform. В программе от Google было замечено постоянное улучшение качества и точности распознавания. Сервис самосовершенствуется за счет технологий машинного обучения. Однако, распознавание русскоязычных слов и фраз у Яндекса на уровень выше.

Как использовать распознавание голоса в бизнесе?

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

Не так давно, нашим клиентом стал один, известный всем SaaS сервис (по просьбе компании, имя сервиса не разглашается). С помощью F1Golos они записали два аудиоролика, один из которых был нацелен на продление жизни тёплых клиентов, другой – на обработку запросов клиентов.

Как продлить жизнь клиентов с помощью распознавания голоса?

Зачастую, SaaS сервисы работают по ежемесячной абонентской плате. Рано или поздно, период пробного пользования или оплаченного трафика - заканчивается. Тогда появляется необходимость продления услуги. Компанией было принято решение предупреждать пользователей об окончании трафика за 2 дня до истечения срока пользования. Оповещение пользователей происходило через голосовую рассылку. Ролик звучал так: «Добрый день, напоминаем, что у вас заканчивается период оплаченного пользования сервисом ХХХ. Для продления работы сервиса скажите - да, для отказа от предоставляемых услуг скажите нет».

Звонки пользователей, которые произнесли кодовые слова: ДА, ПРОДЛИТЬ, ХОЧУ, ПОДРОБНЕЕ; были автоматически переведены на операторов компании. Так, порядка 18% пользователей продлили регистрацию благодаря лишь одному звонку.

Как упростить систему обработки данных с помощью распознавание речи?

Второй аудиоролик, запущенный той же компанией, носил другой характер. Они использовали голосовую рассылку для того, чтобы снизить издержки на верификацию номеров телефона. Ранее они проверяли номера пользователей с помощью звонка-роботом. Робот просил пользователей нажать определенные клавиши на телефоне. Однако с появлением технологий распознавания, компания сменила тактику. Текст нового ролика звучал следующим образом: «Вы зарегистрировались на портале ХХХ, если вы подтверждаете свою регистрацию, скажите да. Если вы не направляли запрос на регистрацию, скажите нет». Если клиент произносил слова: ДА, ПОДТВЕРЖДАЮ, АГА или КОНЕЧНО, данные об этом моментально переводились в CRM-систему компании. И запрос на регистрацию подтверждался автоматически за пару минут. Внедрение технологий распознавания снизило время одного звонка с 30 до 17 секунд. Тем самым, компания снизила издержки почти в 2 раза.

Если вам интересны другие способы использования распознавания голоса, или вы хотите узнать подробнее о голосовых рассылках, переходите по ссылке. На F1Golos вы сможете оформить первую рассылку бесплатно и узнать на себе, как работают новые технологии распознавания.

В «Фейсбуке» нам задали вопрос:
«Для работы с текстом мне нужно расшифровать 3 часа диктофонной записи. Пробовал загрузить аудиофайл с картинкой в YouTube и воспользоваться их расшифровщиком текста, но получается какая-то абракадабра. Подскажите, как можно решить это технически? Спасибо!
Александр Коновалов»

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

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

Но, чтобы искусственный интеллект системы распознавания смог проделать свою работу – пользователь должен проделать свою. А именно: говорить в микрофон четко и размеренно, избегать сильных фоновых шумов, по возможности использовать стереогарнитуру или выносной микрофон, прикрепленный к петлице (для качества распознавания важно, чтобы микрофон все время находился на одном расстоянии от губ, а вы сами говорили с одинаковой громкостью). Естественно, чем выше класс аудиоустройства – тем лучше.

Несложно придерживаться этих условий, если вы, вместо того, чтобы обращаться к интернет-сервису распознавания речи напрямую, применяете в качестве промежуточного устройства-посредника диктофон. К слову, такой «персональный секретарь» особенно незаменим, когда у вас нет доступа к онлайну. Естественно, лучше использовать хотя бы недорогой профессиональный диктофон, нежели записывающее устройство, встроенное в дешевый mp3-плеер или смартфон. Это даст гораздо больше шансов «скормить» полученные записи сервису распознавания речи.

Сложно, но можно уговорить соблюдать эти правила собеседника, у которого вы берете интервью (еще один совет: если у вас нет в комплекте выносного микрофона на прищепке – хотя бы держите диктофон рядом с собеседником, а не с собой).

А вот «законспектировать» на нужном уровне в автоматическом режиме конференцию или семинар – дело, на мой взгляд, практически нереальное (ведь вы не сможете контролировать речь спикеров и реакцию слушателей). Хотя достаточно интересный вариант: превращение в текст профессионально записанных аудиолекций и аудиокниг (если на них не накладывалась фоновая музыка и шумы).

Будем надеяться, что качество вашей диктофонной записи – достаточно высокое, чтобы ее удалось расшифровать в автоматическом режиме .

Если же нет – практически при любом качестве записи вы сможете провести расшифровку в полуавтоматическом режиме .

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

Итак, по порядку.

1. Автоматическое распознавание речи

Многие советуют расшифровывать диктофонные записи на YouTube. Но этот метод заставляет пользователя тратить время на этапе загрузки аудиофайла и фоновой картинки, а затем – в ходе очистки итогового текста от меток времени. Между тем, это время несложно сэкономить. 🙂

Вы можете распознавать аудиозаписи прямо со своего компьютера, воспользовавшись возможностями одного из интернет-сервисов, работающих на движке распознавания Google (рекомендую Speechpad.ru или Speechlogger.com). Все, что нужно – проделать маленький трюк: вместо вашего голоса, воспроизводимого с микрофона, перенаправить на сервис аудиопоток, воспроизводимый вашим компьютерным проигрывателем.

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

Стерео микшер входил в состав Windows XP – но был удален разработчиками из более поздних версий этой операционной системы (говорят, в целях защиты авторских прав: чтобы геймеры не воровали музыку из игр и т.п.). Однако стерео микшер нередко поставляется вместе с драйверами аудиокарт (например, карт Realtec, встраиваемых в материнскую плату). Если вы не найдете стерео микшер на своем ПК с помощью предлагаемых ниже скриншотов – попробуйте переустановить аудиодрайверы с CD-диска, который шел в комплекте с материнской платой – либо с сайта ее производителя.

Если и это не поможет – установите на компьютер альтернативную программу. Например – бесплатный VB-CABLE Virtual Audio Device : использовать его рекомендует владелец вышеупомянутого сервиса Speechpad.ru.

Первым шагом вы должны отключить для использования в режиме записи микрофон и включить вместо него стерео микшер (либо виртуальный VB-CABLE).

Для этого нажмите по иконке громкоговорителя в правом нижнем углу (возле часов) – либо выберите раздел «Звук» в «Панели управления». Во вкладке «Запись» открывшегося окна щелкните правой кнопкой мыши и поставьте птички напротив пунктов «Показать отключенные устройства» и «Показать отсоединенные устройства». Нажмите правой кнопкой по иконке микрофона и выберите пункт «Отключить» (вообще, отключите все устройства, отмеченные зеленым значком).

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

Если вы решили использовать VB-CABLE – то тем же способом включите его во вкладке «Запись».

А также – во вкладке «Воспроизведение».

Второй шаг. Включите аудиозапись в любом проигрывателе (если нужно расшифровать аудиодорожку видеоролика – можно запустить и видеопроигрыватель). Параллельно загрузите в браузере Chrome сервис Speechpad.ru и нажмите в нем кнопку «Включить запись». Если запись достаточно высокого качества, вы увидите, как сервис на глазах превращает речь в осмысленный и близкий к оригиналу текст. Правда, без знаков препинания, которые вам придется расставить самостоятельно.

В качестве аудиопроигрывателя советую использовать AIMP, о котором будет подробнее рассказано в третьей подглавке. Сейчас лишь отмечу, что этот плеер позволяет замедлить запись без искажений речи, а также исправить некоторые другие погрешности. Это может несколько улучшить распознавание не слишком качественной записи. (Иногда даже советуют предварительно подвергать плохие записи обработке в профессиональных программах редактирования звука. Однако, на мой взгляд, это слишком трудоемкая задача для большинства пользователей, которые гораздо быстрее наберут текст вручную. 🙂)

2. Полуавтоматическое распознавание речи

Тут все просто. Если запись некачественная и распознавание «захлебывается» либо сервис выдает слишком много ошибок – помогите делу сами, «встроившись» в цепочку: «аудиоплеер – диктор – система распознавания».

Ваша задача: прослушивать в наушниках записанную речь – и параллельно надиктовывать ее через микрофон интернет-сервису распознавания. (Естественно, вам не нужно, как в предыдущем разделе, переключаться в списке записывающих устройств с микрофона на стерео микшер или виртуальный кабель). А в качестве альтернативы упоминавшимся выше интернет-сервисам можете использовать смартфонные приложения вроде бесплатной «Яндекс.Диктовки» либо функцию диктовки в iPhone с операционной системой iOS 8 и выше.

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

Если у вас получится диктовать синхронно с воспроизведением записи на плеере – предварительная расшифровка займет практически столько же времени, сколько и сама запись (не считая последующих затрат времени на исправление орфографических и грамматических ошибок). Но даже работа по схеме: «прослушать фразу – надиктовать – прослушать фразу – надиктовать», – может вам дать неплохую экономию времени по сравнению с традиционным набором текста.

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

3. Расшифровка диктофонной записи в ручном режиме

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

Во всех этих случаях вам поможет мой фирменный способ расшифровки вручную (прослушиваете запись в AIMP – набираете текст в Word). С его помощью вы превратите запись в текст быстрее, чем это сделают многие профессиональные журналисты, чья скорость набора на клавиатуре аналогична вашей! При этом вы потратите гораздо меньше, чем они, сил и нервов. 🙂

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

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

Использование обычного программного плеера на компьютере мало облегчает процесс: пользователю приходится постоянно сворачивать/разворачивать Word, останавливать/запускать плеер, да еще елозить туда-сюда слайдером плеера, чтобы найти неразборчивый фрагмент, а затем вернуться к последнему прослушанному месту в записи.

Чтобы сократить эти и другие потери времени, специализированные IT-компании разрабатывают программные и аппаратные транскрайберы. Это достаточно дорогие решения для профессионалов – тех же журналистов, судебных стенографистов, следователей и т.д. Но, собственно, для наших целей требуются только две функции:

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

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

«Войдя в настройки AIMP, найдите раздел Глобальные клавиши и перенастройте Стоп/Пуск на клавишу Эскейп (Esc). Поверьте, это наиболее удобно, поскольку не придется задумываться и палец не попадет случайно на другие клавиши. Пункты «Немного перейти назад» и «Немного перейти вперед» настройте, соответственно, на клавиши Ctrl + клавиши курсора назад/вперед (у вас на клавиатуре есть четыре клавиши со стрелками – выберите две из них). Эта функция нужна, чтобы заново прослушать последний фрагмент или перейти немного вперед.

Затем, вызвав эквалайзер, вы можете уменьшить значения «Скорость» и «Темп» – и увеличить значение «Питч». При этом Вы заметите, что скорость воспроизведения замедлится, но высота голоса (если хорошо подберете значение «Питч») – не изменится. Подберите эти два параметра так, чтобы вы практически синхронно успевали набирать текст, лишь изредка останавливая его.

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

Могу только добавить к сказанному, что, если запись не очень качественная – вы можете попытаться улучшить ее воспроизведение, экспериментируя с другими настройками в «Менеджере звуковых эффектов» AIMP.

А количество секунд, на которое вам будет наиболее удобно перемещаться по записи назад или вперед с помощью горячих клавиш – установите в разделе «Плеер» окна «Настройки» (которое можно вызвать нажатием горячих клавиш «Ctrl + P»).

Желаю сэкономить побольше времени на рутинных задачах – и плодотворно использовать его для главных дел! 🙂 И не забудьте включить микрофон в списке записывающих устройств, когда соберетесь поговорить по скайпу! 😉

3 способа расшифровки диктофонной записи: распознавание речи, диктовка, ручной режим