Распознаватель речи. Разбираемся с современными системами распознавания речи в Linux

) на реальном Hello World примере управления домашней техникой.
Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность , которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit .
К статье я также прилагаю все исходники программы и саму сборку под Android .

С чего вдруг?

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

Зачем нам что-то еще кроме Яндекса и Google?

В качестве того самого «практического применения» я выбрал тему голосового управления умным домом .
Почему именно такой пример? Потому что на нем можно увидеть те несколько преимуществ полностью локального распознавания речи перед распознаванием с использованием облачных решений. А именно:
  • Скорость - мы не зависим от серверов и поэтому не зависим от их доступности, пропускной способности и т.п. факторов
  • Точность - наш движок работает только с тем словарем, который интересует наше приложение, повышая тем самым качество распознавания
  • Стоимость - нам не придется платить за каждый запрос к серверу
  • Голосовая активация - как дополнительный бонус к первым пунктам - мы можем постоянно «слушать эфир», не тратя при этом свой трафик и не нагружая сервера

Примечание

Сразу оговорюсь, что эти преимущества можно считать преимуществами только для определенного класса проектов , где мы точно заранее знаем , каким словарем и какой грамматикой будет оперировать пользователь. То есть, когда нам не надо распознать произвольный текст (например, СМС сообщение, либо поисковый запрос). В обратном случае без облачного распознавания не обойтись.

Так Android же умеет распознавать речь без интернета!
Да-да… Только на JellyBean. И только с полуметра, не более. И это распознавание - это та же диктовка, только с использованием гораздо меньшей модели. Так что управлять ею и настраивать ее мы тоже не можем. И что она вернет нам в следующий раз - неизвестно. Хотя для СМС-ок в самый раз!

Что будем делать?

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

Вариантов практического применения масса

Утром, не открывая глаз, хлопнули ладонью по экрану смартфона на тумбочке и командуем «Доброе утро!» - запускается скрипт, включается и жужжит кофеварка, раздается приятная музыка, раздвигаются шторы.
Повесим по дешевому (тысячи по 2, не более) смартфону в каждой комнате на стенке. Заходим домой после работы и командуем в пустоту «Умный дом! Свет, телевизор!» - что происходит дальше, думаю, говорить не надо.

Транскрипции



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

Транскрипции описываются с помощью специального синтаксиса. Например:
умный uu m n ay j дом d oo m

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

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

Голосовая активация

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

Одно стоит упомянуть обязательно. Для активационной фразы нужно не только указать транскрипцию, но и подобрать подходящее значение порога чувствительности . Слишком маленькое значение приведет к множеству ложных срабатываний (это когда вы не говорили активационную фразу, а система ее распознает). А слишком высокое - к невосприимчивости. Поэтому данная настройка имеет особую важность. Примерный диапазон значений - от 1e-1 до 1e-40 в зависимости от активационной фразы .

Активация по датчику приближения

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

Запускаем распознование

Pocketsphinx предоставляет удобный API для конфигурирования и запуска процесса распознавания. Это классы SppechRecognizer и SpeechRecognizerSetup .
Вот как выглядит конфигурация и запуск распознавания:

PhonMapper phonMapper = new PhonMapper(getAssets().open("dict/ru/hotwords")); Grammar grammar = new Grammar(names, phonMapper); grammar.addWords(hotword); DataFiles dataFiles = new DataFiles(getPackageName(), "ru"); File hmmDir = new File(dataFiles.getHmm()); File dict = new File(dataFiles.getDict()); File jsgf = new File(dataFiles.getJsgf()); copyAssets(hmmDir); saveFile(jsgf, grammar.getJsgf()); saveFile(dict, grammar.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer(); mRecognizer.addKeyphraseSearch(KWS_SEARCH, hotword); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

Здесь мы сперва копируем все необходимые файлы на диск (Pocketpshinx требует наличия на диске аккустической модели, грамматики и словаря с транскрипциями). Затем конфигурируется сам движок распознавания. Указываются пути к файлам модели и словаря, а также некоторые параметры (порог чувствительности для активационной фразы). Далее конфигурируется путь к файлу с грамматикой, а также активационная фраза.

Как видно из этого кода, один движок конфигурируется сразу и для грамматики, и для распознавания активационной фразы. Зачем так делается? Для того, чтобы мы могли быстро переключаться между тем, что в данный момент нужно распознавать. Вот как выглядит запуск процесса распознавания активационной фразы:

MRecognizer.startListening(KWS_SEARCH);
А вот так - распозанвание речи по заданной грамматике:

MRecognizer.startListening(COMMAND_SEARCH, 3000);
Второй аргумент (необязательный) - количество миллисекунд, после которого распознавание будет автоматически завершаться, если никто ничего не говорит.
Как видите, можно использовать только один движок для решения обеих задач.

Как получить результат распознавания

Чтобы получить результат распознавания, нужно также указать слушателя событий, имплементирующего интерфейс RecognitionListener .
У него есть несколько методов, которые вызываются pocketsphinx-ом при наступлении одного из событий:
  • onBeginningOfSpeech - движок услышал какой-то звук, может быть это речь (а может быть и нет)
  • onEndOfSpeech - звук закончился
  • onPartialResult - есть промежуточные результаты распознавания. Для активационной фразы это значит, что она сработала. Аргумент Hypothesis
  • onResult - конечный результат распознавания. Этот метод будет вызыван после вызова метода stop у SpeechRecognizer . Аргумент Hypothesis содержит данные о распознавании (строка и score)

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

@Override public void onEndOfSpeech() { Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) { mRecognizer.stop(); } } @Override public void onPartialResult(Hypothesis hypothesis) { if (hypothesis == null) return; String text = hypothesis.getHypstr(); if (KWS_SEARCH.equals(mRecognizer.getSearchName())) { startRecognition(); } else { Log.d(TAG, text); } } @Override public void onResult(Hypothesis hypothesis) { mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); String text = hypothesis != null ? hypothesis.getHypstr() : null; Log.d(TAG, "onResult " + text); if (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) { if (text != null) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); process(text); } mRecognizer.startListening(KWS_SEARCH); } }

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

Private synchronized void startRecognition() { if (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) return; mRecognizer.cancel(); new ToneGenerator(AudioManager.STREAM_MUSIC, ToneGenerator.MAX_VOLUME).startTone(ToneGenerator.TONE_CDMA_PIP, 200); post(400, new Runnable() { @Override public void run() { mMicView.setBackgroundResource(R.drawable.background_big_mic_green); mRecognizer.startListening(COMMAND_SEARCH, 3000); Log.d(TAG, "Listen commands"); post(4000, mStopRecognitionCallback); } }); }
Здесь мы сперва играем небольшой сигнал для оповещения пользователя, что мы его услышали и готовы к его команде. На это время микрофон долже быть выключен. Поэтому мы запускаем распознавание после небольшого таймаута (чуть больше, чем длительность сигнала, чтобы не услышать его эха). Также запускается поток, который остановит распознавание принудительно, если пользователь говорит слишком долго. В данном случае это 3 секунды.

Как превратить распознанную строку в команды

Ну тут все уже специфично для конкретного приложения. В случае с нагим примером, мы просто вытаскиваем из строчки названия устройств, ищем по ним нужное устройство и либо меняем его состояние с помощью HTTP запроса на контроллер умного дома, либо сообщаем его текущее состояние (как в случае с термостатом). Эту логику можно увидеть в классе Controller .

Как синтезировать речь

Синтез речи - это операция, обратная распознаванию. Здесь наоборот - нужно превратить строку текста в речь, чтобы ее услышал пользователь.
В случае с термостатом мы должны заставить наше Android устройство произнести текущую температуру. С помощью API TextToSpeech это сделать довольно просто (спасибо гуглу за прекрасный женский TTS для русского языка):

Private void speak(String text) { synchronized (mSpeechQueue) { mRecognizer.stop(); mSpeechQueue.add(text); HashMap params = new HashMap(2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true"); mTextToSpeech.speak(text, TextToSpeech.QUEUE_ADD, params); } }

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

Private final TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() { @Override public void onUtteranceCompleted(String utteranceId) { synchronized (mSpeechQueue) { mSpeechQueue.poll(); if (mSpeechQueue.isEmpty()) { mRecognizer.startListening(KWS_SEARCH); } } } };

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

И это все?

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

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

Титровщик телефона для глухих и слабослышащих

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

Автоматическая транскрипция

Вы записали интервью? Сохранить некоторое время на переписывание его, с автоматическим речи Google, к тексту, принесла в ваш браузер по Speechlogger. Воспроизведение записанного интервью в микрофон вашего компьютера (или линии) в-и пусть speechlogger сделать транскрипцию. Speechlogger сохраняет транскрипции текст вместе с датой, временем и ваши комментарии. Она также позволяет редактировать текст. Телефонных разговоров могут быть расшифрованы с помощью того же метода. Вы также можете записать аудио-файлы непосредственно с компьютера, как описано ниже.

Автоматический устный и письменный переводчик

Встреча с иностранными гостями? Принесите ноутбук (или два) с speechlogger и микрофона. Каждая сторона будет видеть друга произнесенные слова, переведенные на их родном языке в режиме реального времени. Это также полезно на телефонный звонок на иностранном языке, чтобы убедиться, что вы в полной мере понять другую сторону. Подключите аудиовыход вашего телефона, чтобы линейный вход вашего компьютера и начать Speechlogger.

Изучайте иностранные языки и улучшайте навыки произношения

Speechlogger является отличным инструментом для изучения языков и может быть использован u200b u200Bin несколько способов. Вы можете использовать его, чтобы узнать словарный запас, говоря на вашем родном языке и давая программного обеспечения перевести его. Вы можете учиться и практиковать правильное произношение, разговаривая на иностранном языке и, видя, понимает ли Speechlogger или нет. Если расшифрованы текст в черным шрифтом это означает, что вы произнес это хорошо.

Генерирование субтитров для фильмов

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

Диктуйте вместо ввода

Написание письма? Документы? Списки? Резюме? Независимо от того, вам нужно ввести, попробуйте диктовать его Speechlogger вместо этого. Speechlogger будет автоматически сохранять его для вас, и позволит экспортировать его в документ.

Забавная игра:)

Вы можете имитировать китайскую динамик? Французский? Что о русском языке? Попробуйте имитировать иностранный язык и увидеть то, что вы только что сказали, с Speechlogger. Используйте синхронный перевод Speechlogger, чтобы понять, что вы только что сказали. Получить удивительные результаты - это очень весело!

Человека всегда привлекала идея управлять машиной естественным языком. Возможно, это отчасти связано с желанием человека быть НАД машиной. Так сказать, чувствовать свое превосходство. Но основной посыл - это упрощение взаимодействия человека с искусственным интеллектом. Управление голосом в 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. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

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

Сервис SendPulse – это маркетинговый инструмент для создания подписной базы и перевода случайных посетителей вашего сайта в разряд постоянных. SendPulse объединяет на одной платформе важнейшие функции для привлечения и удержания клиентов:
● e-mail-рассылки,
● web-push,
● SMS рассылки,
● SMTP,
● рассылки в Viber,
● отправка сообщений в facebook messenger.

Рассылки email

Вы можете воспользоваться различными тарифами для ведения e-mail-рассылки, в том числе и бесплатным. Бесплатный тариф имеет ограничения: подписная база не более 2500.
Первое, с чего нужно начать, при работе с сервисом e-mail рассыл ок , – это создать свою адресную книгу . Задайте заголовок и загрузите список e-mail адресов.


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


При создании форм подписки обязательно использование e-mail с корпоративным доменом. Читайте, как .
Шаблоны сообщений помогут красиво оформить ваши письма подписчикам. Собственный шаблон писем вы можете создать в специальном конструкторе.


Авторассылки . Контент-менеджеры активно используют автоматическую рассылку . Это помогает автоматизировать процесс работы с клиентами. Создать авторассылку можно несколькими способами:
Последовательная серия писем . Это самый простой вариант, когда вне зависимости от условий пишутся несколько писем, которые будут разосланы получателям в определенном порядке. Здесь могут быть свои варианты – серия сообщений (простая цепочка сообщений), особая дата (письма приурочены к определенным датам), триггерное письмо – письмо отправляется в зависимости от действий подписчика (открытия сообщения и пр).
Automation360 – рассылка с определенными фильтрами и условиями, а также с учетом конверсий.
Готовые цепочки по шаблону. Вы можете создать серию писем по заданному шаблону или видоизменить шаблон и подстроить его под свои нужды.
А/B тестирование поможет провести эксперимент по различным вариантам отправки серии писем и определить наилучший вариант по открытиям или переходам.

Отправка Push уведомлений

Push-рассылки – это подписка в окне браузера, это своего рода замена rss-подпискам. Технологии web-push стремительно вошли в нашу жизнь, и уже сложно найти сайт, который не использует для привлечения и удержания клиентов пуш-рассылки. Скрипт запроса на , вы можете отправлять письма, как вручную, так и создать авторассылки, создав серию писем или собрав данные с RSS. Второй вариант подразумевает, что после появления новой статьи на вашем сайте, автоматически будет рассылаться уведомление об этом вашим подписчикам с кратким анонсом.


Новинка от Send Pulse – теперь вы можете монетизировать сайт с помощью Push-уведомлений, встраивая в них рекламные объявления. По достижении 10$ каждый понедельник осуществляются выплаты на одну из платежных систем – Visa/mastercard, PayPal или Webmoney.
Push -сообщения на сервисе абсолютно бесплатны. Оплата берется только за White Label – рассылки без упоминания сервиса SendPulse, но если вам не мешает логотип сервиса, то вы можете пользоваться пушами бесплатно без ограничений.

SMTP

Функция SMTP защищает вашу рассылку от попадания в черный список за счет использования белых IP адресов. Технологии криптографической подписи DKIM и SPF, которые используются в рассылках SendPulse, повышают доверие к рассылаемым письмам, благодаря чему ваши письма реже будут попадать в спам или блэк-лист.

Боты Facebook Messenger

Facebook чат-бот находится на этапе бета-тестирования. Вы можете подключить его к своей странице и рассылать сообщения подписчикам.

Отправка SMS

Через сервис SendPulse легко отправлять-рассылки по базе телефонных номеров. Вначале вам нужно создать адресную книгу с перечнем телефонных номеров. Для этого выберите раздел “Адресная книга”, создайте новую адресную книгу, загрузите номера телефонов. Теперь вы можете создать СМС-рассылку по данной базе. Цена СМС рассылки варьирует в зависимости от операторов связи получателей и составляют в среднем от 1,26 рубля до 2,55 рублей за 1 отправленное СМС.

Партнерская программа

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

Да только воз и ныне там.
И.А. Крылов. Басня «Лебедь, Щука и Рак»

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

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

Казалось бы, почему не заняться решением этой проблемы программно, с использованием «умных» компьютеров? Ведь и производители подобных продуктов вроде бы имеются, и мощность компьютеров непрерывно растет, и технологии совершенствуются. Однако успехи в области автоматического распознавания речи и преобразования ее в текст, похоже, находятся на том же уровне, что и 20-40 лет назад. Помнится, еще в середине 90-х годов компания IBM уверенно заявила о наличии такого рода инструментов в OS/2, а чуть позже и Microsoft подключилась к внедрению подобных технологий. Пыталась заниматься распознаванием речи и компания Apple, но в начале 2000 года она официально объявила об отказе от этого проекта. Продолжают работать в этой области компании IBM (Via Voice) и Philips, причем функцию распознавания речи IBM не только встраивала в свою операционную систему OS/2 (ныне уже канувшую в лету), но и до сих пор выпускает в качестве отдельного продукта. Пакет для распознавания слитной речи Via Voice (http://www-306.ibm.com/software/voice/viavoice) от IBM отличался тем, что с самого начала даже без обучения распознавал до 80% слов. При обучении же вероятность правильного распознавания повышалась до 95%, а к тому же параллельно с настройкой программы на конкретного пользователя происходило освоение будущим оператором навыков работы с системой. Сейчас ходят слухи о том, что подобные новации будут реализованы и в составе Windows XP, хотя глава и основатель корпорации Билл Гейтс неоднократно заявлял, что считает речевые технологии еще не готовыми для массового применения.

Когда-то американская компания Dragon Systems создала, наверное, первую коммерческую систему распознавания речи — Naturally Speaking Preferred, которая работала еще в 1982 году на IBM PC (даже не XT!). Правда, эта программа больше напоминала игру и с тех пор никаких серьезных подвижек компания так и не сделала, а к 2000 году и вовсе разорилась, причем ее последняя версия Dragon Dictate Naturally Speaking была продана компании Lernout&Hauspie Speech Products (L&H), являвшейся тоже одним из лидеров в области систем и методов распознавания и синтеза речи (Voice Xpress). L&H, в свою очередь, тоже дошла до банкротства с распродажей активов и имущества (к слову сказать, Dragon Systems была продана почти за 0,5 млрд. долл., а L&H — уже за 10 млн., так что своими масштабами в этой области впечатляет не прогресс, а регресс!). Технологии L&H и Dragon Systems перешли к компании ScanSoft, которая занималась до этого распознаванием оптических образов (в ее ведении сегодня находятся некоторые известные программы распознавания печатного текста типа OmniPage), но там, похоже, этим никто серьезно не занимается.

Российская компания Cognitive Technologies, достигнувшая значительных успехов в области распознавания символов, сообщила в 2001 году о совместном проекте с Intel по созданию систем распознавания русской речи — для Intel был подготовлен речевой корпус русского языка RuSpeech. Собственно, RuSpeech представляет собой речевую базу данных, которая содержит фрагменты непрерывной русской речи с соответствующими текстами, фонетической транскрипцией и дополнительной информацией о дикторах. Cognitive Technologies ставила перед собой цель создать «дикторонезависимую» систему распознавания непрерывной речи, а речевой интерфейс состоял из системы сценария диалога, синтеза речи по тексту и системы распознавания речевых команд.

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

«Ну все, тебе конец», — сказал Иван Царевич, глядя прямо в глаза третьей голове Змея Горыныча. Она растерянно посмотрела на две другие. Те в ответ злорадно ухмыльнулись.

Анекдот

1997 году выход на коммерческий рынок знаменитого «Горыныча» (по существу адаптации программы Dragon Dictate Naturally Speaking, проведенной силами малоизвестной до того времени российской компании White Group, официального дистрибьютора Dragon Systems) стал своеобразной сенсацией. Программа казалась вполне работоспособной, а ее цена представлялась весьма умеренной. Однако время идет, «Горынычи» меняют интерфейсы и версии, но никаких ценных свойств не приобретают. Может быть, ядро Dragon Naturally Speaking было как-то настроено на особенности англоязычной речи, но даже после последовательной замены драконьей головы на три головы «Горыныча» оно дает не более 30-40% распознавания среднего уровня лексики, причем при тщательном проговаривании. Да и кому это вообще нужно? Как известно, по заявлениям разработчиков компаний Dragon Systems, IBM и Lernout&Hauspie, их программы при непрерывной диктовке были способны правильно распознавать до 95% текста, но ведь и они давно уже не выпускаются, ибо известно, что для комфортной работы точность распознавания необходимо довести до 99%. Надо ли говорить, что для завоевания подобных высот в реальных условиях требуются, мягко говоря, немалые усилия.

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

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

При ближайшем рассмотрении новой версии этой программы ничего путного извлечь из нее нам так и не удалось. Даже после длительного «обучения» программы (а стандартный словарь нам вообще не помог) оказалось, что диктовка по-прежнему должна осуществляться строго по словам (то есть после каждого слова нужно делать паузу) и слова нужно произносить отчетливо, что не всегда характерно для речи. Конечно, «Горыныч» — это модификация англоязычной системы, а для английского иной подход просто немыслим, но говорить в такой манере по-русски показалось нам особенно неестественным. К тому же в процессе обычного разговора на любом языке интенсивность звука практически никогда не падает до нуля (в этом можно убедиться по спектрограммам), а ведь распознавать диктовку текстов общей тематики, выполняемую в манере слитной речи, коммерческие программы научились уже лет 5-10 назад.

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

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

Анализируя возможности программы, мы все больше склоняемся к мнению специалистов, что лингвистический анализ текста — обязательная стадия процесса автоматического ввода под диктовку. Без этого современное качество распознавания не может быть достигнуто, да и многие эксперты связывают перспективы речевых систем именно с дальнейшим развитием содержащихся в них лингвистических механизмов. Как следствие, речевые технологии делаются все более зависимыми от того языка, с которым они работают. А это значит, во-первых, что распознавание, синтез и обработка русской речи являются тем делом, заниматься которым должны именно российские разработчики, а во-вторых, только специализированные отечественные продукты, изначально ориентированные именно на русский язык, смогут по-настоящему решить ту задачу. Правда, здесь следует отметить, что отечественные специалисты петербургского «Центра речевых технологий» (ЦРТ) считают, что создание собственной системы диктовки в нынешних российских условиях не окупится.

Прочие игрушки

ока технологии распознавания речи российскими разработчиками успешно применяются в основном в интерактивных обучающих системах и играх вроде «Мой говорящий словарь», Talk to Me или «Профессор Хиггинс», созданных фирмой «ИстраСофт». Используются они для контроля произношения у изучающих английский язык и аутентификации пользователя. Развивая программу «Профессор Хиггинс», сотрудники «ИстраСофт» научились членить слова на элементарные сегменты, которые соответствуют звукам речи и не зависят ни от диктора, ни от языка (прежде системы распознавания речи не производили такой сегментации, а наименьшей единицей для них было слово). При этом выделение фонем из потока слитной речи, их кодирование и последующее восстановление происходит в режиме реального времени. Указанная технология распознавания речи нашла довольно остроумное применение — она позволяет существенно сжимать файлы с диктофонными записями или речевыми сообщениями. Способ, предложенный фирмой «ИстраСофт», допускает сжатие речи в 200 раз, причем при сжатии менее чем в 40 раз качество речевого сигнала практически не ухудшается. Интеллектуальная обработка речи на уровне фонем перспективна не только как способ сжатия, но и как шаг на пути к созданию нового поколения систем распознавания речи, ведь теоретически машинное распознавание речи, то есть ее автоматическое представление в виде текста, как раз и является крайней степенью сжатия речевого сигнала.

Сегодня фирма «ИстраСофт» помимо обучающих программ предлагает на своем сайте (http://www.istrasoft.ru/user.html) и программы для сжатия/проигрывания звуковых файлов, а также демонстрационную программу голосонезависимого распознавания команд русского языка Istrasoft Voice Commander.

Казалось бы, теперь для того, чтобы создать основанную на новой технологии систему распознавания, осталось сделать совсем немного…

), которая работает в этой области с 1990 года, похоже, добилась определенных успехов. ЦРТ имеет в своем арсенале целый набор программных и аппаратных средств, предназначенных для шумоочистки и для повышения качества звуковых, и в первую очередь речевых, сигналов — это компьютерные программы, автономные устройства, платы (DSP), встраиваемые в устройства каналов записи или передачи речевой информации (мы уже писали об этой фирме в статье «Как улучшить разборчивость речи?» в № 8’2004). «Центр речевых технологий» известен как разработчик средств шумоподавления и редактирования звука: Clear Voice, Sound Cleaner, Speech Interactive Software, Sound Stretcher и др. Специалисты фирмы принимали участие в восстановлении аудиоинформации, записанной на борту затонувшей подлодки «Курск» и на потерпевших катастрофы воздушных судах, а также в расследовании ряда уголовных дел, для которых требовалось установить содержание фонограмм речи.

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

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

Однако при двухканальном съеме информации Sound Cleaner существенно снижает влияние шумов любого типа — например, он имеет методы двухканальной адаптивной фильтрации, предназначенные для подавления как широкополосных нестационарных помех (таких как речь, радио или телетрансляция, шумы зала и т.д.), так и периодических (вибрации, сетевые наводки и т.п.). Эти методы основаны на том, что при выделении полезного сигнала используется дополнительная информация о свойствах помехи, представленная в опорном канале.

Коль скоро мы говорим о распознавании речи, то нельзя не упомянуть о другой разработке ЦРТ — семействе компьютерных транскрайберов, которые, к сожалению, пока еще не являются программами автоматического распознавания речи и преобразования ее в текст, а скорее представляют собой компьютерные цифровые магнитофоны, управляемые из специализированного текстового редактора. Данные устройства предназначены для повышения скорости и улучшения комфортности документирования звукозаписей устной речи при подготовке сводок, протоколов совещаний, переговоров, лекций, интервью, их также применяют в безбумажном делопроизводстве и во многих других случаях. Транскрайберы отличаются простотой и удобством в использовании и доступны даже для непрофессиональных операторов. При этом скорость работы по набору текста возрастает в два-три раза у профессиональных операторов, печатающих вслепую, а у непрофессионалов — в пять-десять раз! Кроме того, значительно уменьшается механический износ магнитофона и ленты, если речь идет об аналоговом источнике. К тому же у компьютерных транскрайберов существует интерактивная возможность сверки набранного текста и соответствующего звукового трека. Связь текста и речи устанавливается автоматически и позволяет в набранном тексте при подведении курсора к исследуемой части текста мгновенно автоматически находить и прослушивать соответствующие звуковые фрагменты речевого сигнала. Повышения разборчивости речи можно добиться здесь как путем замедления скорости воспроизведения без искажения тембра голоса, так и путем многократного повторения неразборчивых фрагментов в режиме кольца.

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

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

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

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