Использование yandex speechkit для распознавания речи в 1с
Содержание:
- Введение
- Практические опыты с Red Hat JBoss Middleware RED HAT JBOSS FUSE. Часть №1
- Условия и ограничения
- Краткий Обзор Решений
- Аналитика по телефонным звонкам для бизнеса
- Как подключаться к сервисам Яндекса
- Как синтез речи используется в бизнесе
- Голосовые движки: мужские и женские
- Программы для озвучки текста
- SIP телефон(софтфон) для 1С:Предприятия 8 и IP АТС (виртуальная и офисная) Промо
- Популярные голосовые движки
- Как масштабироваться при больших количествах звонков
- Работа с файлами телефонных звонков
Введение
Технология синтеза речи позволяет переводить текст в речь (звуковой файл). Задача актуальна для озвучивания динамически обновляемой информации или быстро меняющихся данных, таких как остаток товаров на складе, репертуар кинотеатров и так далее. Технология синтеза речи Яндекса построена на базе скрытых марковских моделей (HMM). За счет применения статистического подхода в акустическом моделировании удается достичь естественных плавных интонаций. Технология позволяет достаточно быстро создавать новые голоса и синтезировать различные эмоции.
Синтез речи Яндекса позволяет выбрать:
- мужской или женский голос для озвучивания;
- эмоции: добрый, злой, нейтральный голос.
Практические опыты с Red Hat JBoss Middleware RED HAT JBOSS FUSE. Часть №1
Задачи интеграции на солидном предприятии могут быть неочевидно сложны и многообразны. Нередко выполняется скрупулезная оценка рисков до начала разработки «на берегу». Рассмотрите эксперименты с бесплатными аналогами дорогостоящих эквивалентов систем интеграции на основе сервисной шины предприятия ESB. Они проводились на актуальной версии Centos Linux. Большим плюсом Fuse являются разнообразие решаемых задач, широкие возможности смены или доработки стратегии, технологий интеграции уже в процессе внедрения. (В скачанных дистрибутивах заготовки настроек для запуска этого ПО на Windows имеются.). В данной публикации Вы узнаете как установить и запустить сервисную шину RED HAT JBOSS FUSE.
Условия и ограничения
Распознавание речи — платная услуга, но Яндекс даёт 60 дней и 3000 ₽ для тестирования. За эти деньги можно распознать 83 часа аудио — больше трёх суток непрерывного разговора. Это очень много: за время подготовки этой статьи и тестирования технологии мы потратили 4 рубля за 3 дня.
Если отправлять файлы с записью больше минуты, то одна секунда аудио стоит одну копейку. Чтобы распознать запись длиной в час, нужно 36 рублей. Это примерно в 20 раз дешевле, чем берут транскрибаторы — люди, которые сами набирают текст на слух, прослушивая запись.
Нейросеть часто понимает, когда текст нужно разбить на абзацы, но делает это не всегда правильно. Ещё она не ставит запятые, тире и двоеточия. Максимум, что она делает — ставит точку в конце предложения и начинает новое с большой буквы. Но при этом почти все слова распознаются правильно, и отредактировать такой текст намного проще, чем набирать его с нуля.
Последнее — из-за особенностей нашей речи и произношения SpeechKit может путать слова, которые звучат одинаково (код — кот) или ставить неправильное окончание («слава обрушилось на него неожиданно»). Решение простое: прогоняем такой текст через орфонейрокорректор и всё в порядке. Одна нейронка исправляет другую — реальность XXI века
Всё, приступаем.
Иногда результат получается вот таким, но на понимание текста это не сильно влияет.
Краткий Обзор Решений
Данная статья не ставит своей целью глубокий технический обзор всех доступных решений. Мы хотим просто обрисовать некий ландшафт из доступных вариантов с минимальной степенью готовности. Понятно, что мы не рассматриваем многочисленные тулкиты, а смотрим в первую очередь какие есть более-менее готовые решения с ненулевой библиотекой голосов и подобием поддержки / комьюнити:
Конкатенативные модели (появившиеся до DL бума). Из того, что хоть как-то поддерживается и живо и можно запустить «as-is» без археологических раскопок, я нашел только rhvoice (я глубоко не копал, но есть целые форумы, посвященные использованию голосов из Windows, но вряд ли это можно назвать поддерживаемым решением). На момент, когда я пользовался проектом ради интереса, он по сути был заброшен, но потом у него появился новый «хозяин». К плюсам такого рода решений можно отнести их скорость и нетребовательность к ресурсам (исключая ресурсы, чтобы заставить это работать). Очевидный и основной минус — звучит как говорилка. Менее очевидный минус — довольно тяжело оценить стоимость обладания. Качество звучания: 3+ по пятибалльной шкале;
DL-based модели в основном разделяют end-to-end TTS задачу на подзадачи: текст -> фичи и фичи -> речь (вокодинг). Практически повсеместно для первой подзадачи используется Tacotron2. Выделим следующие сочетания моделей в соответствии с их эффективностью и простотой использования:
Tacotron2 + WaveNet (оригинальный WaveNet принимал на вход лингвофичи, но для такотрона поменяли на более удобные мелспектрограммы). Основная проблема — очень медленный инференс ввиду авторегрессионности модели и необходимость запретительно большого количества ресурсов и времени. Качество звучания: 4+;
Tacotron2 + WaveRNN (тоже с переходом от лингвофичей к спектрограммам). Вокодер заметно быстрее предыдущего: при использовании всех хаков можно получить даже риалтайм синтез без GPU, правда естественность звука несколько просядет. Качество звучания: 3.5-4;
Tacotron2 + Parallel WaveNet. Упомянутый выше медленный вокодер был использован в качестве учителя для получения новой довольно быстрой параллельной модели вокодера: с ней стал возможен синтез быстрее риалтайма, но все еще на мощных GPU. Из недостатков — дистилляция требует качественную учительскую модель и соответствующую схему обучения. Качество звучания: 4+;
Tacotron2 + multi-band WaveRNN. Тоже развитие предыдущих идей, тоже распараллеливание в некотором смысле — здесь доступен синтез быстрее риалтайма уже на CPU. Однако, не слишком популярная работа, меньше имплементаций и поддержки, хотя некоторые подходы хороши и были успешно использованы в более поздних моделях; Качество звучания: 3.5-4+;
Tacotron2 + LPCNet. Интересная идея про сочетание DL и классических алгоритмов, что может дать буст по скорости до подходящего для продакшена уровня и на CPU, но требует вдумчивого допиливания для качественных результатов. Качество звучания: 3.5-4+;
Многочисленные решения на базе Tacotron2 + Waveglow от Nvidia как нынешний стандарт для задачи синтеза речи. Никто не пишет про свой «секретный соус» (например как 15.ai делает голос по 15 минутам и сколько там моделей в цепочке). Есть много имплементаций и репозиториев, которые «копируют» чужой код. Может звучать на cherry-picked примерах неотличимо от живых людей, но когда смотришь реальные модели от комьюнити, качество заметно варьируется, а детали улучшенных решений не раскрываются. Архитектурно к такотрону и его аналогам по скорости и цене обладания претензий нет, но Waveglow очень прожорлив к ресурсам как на тренировке, так и в продакшене, что делает его использование по сути нецелесообразным. Качество звучания: 3.5-4+;
Замена Tacotron2 => FastSpeech / FastSpeech 2 / FastPitch, то есть уход к более простой сетке (на базе forced-align от такотрона и миллион более хитрых и сложных вариантов). Из полезного дает контроль темпа речи и высоты голоса, что неплохо, вообще упрощает и делает более модульной конечную архитектуру
Немаловажно, что сетка перестает быть рекуррентной, что открывает просторы для оптимизаций по скорости. Качество звучания: 3.5-4+;
Аналитика по телефонным звонкам для бизнеса
Что может принести бизнесу распознавание телефонных звонков?
-
Во-первых, это увеличение закрытых сделок. Если разработать скрипт разговора совместно с продажниками, с HR-менеджерами, с руководством, и контролировать, как менеджер по этому скрипту разговаривают, это поможет увеличить количество закрытых сделок.
-
Во-вторых, можно искать вхождение слов. Допустим, менеджер при разговоре с клиентом произносит несколько раз слово «Заказ», «Сделка», «Доставка» – потом по этим словам можно сделать отбор, найти в справочнике все звонки, где эти слова встречались, и, допустим, перезвонить клиенту еще раз, либо передать в доставку. Это позволит не потерять эту сделку.
-
В-третьих, в конце месяца можно посмотреть количество минут, проговоренных каждым из менеджеров, и скоррелировать это с зарплатой – это еще один KPI для менеджеров.
-
В-четвертых, это проверка ошибок. Руководство может посмотреть, кто первый предложил предоставить скидку – это сделал менеджер либо это попросил клиент. Также можно делать разбор конфликтов. Я считаю, что для бизнеса это нужно и позволяет увеличить прибыль.
Как подключаться к сервисам Яндекса
В Яндекс.Облаке очень много сервисов, я в своей работе использовал только два:
-
Yandex Object Storage – для хранения звуковых файлов;
-
Yandex SpeechKit – для преобразования звука в текст.
Вначале, в 2017 году, Yandex Object Storage был не нужен, мы использовали Yandex SpeechKit напрямую – отправляешь wav-файл, ждешь в режиме онлайн и получаешь в текстовом виде расшифровку.
Переходим к Яндекс.Облаку.
Чтобы работать с Облаком, нужно установить тоже командный интерфейс Curl, нужно зарегистрироваться и пройти авторизацию.
Сейчас я более подробно расскажу про каждый из пунктов.
Вначале ставим Curl – это кроссплатформенная служебная программа командной строки.
Ничего сложного тут нет – просто заходим по гиперссылке https://cloud.yandex.ru/docs/cli/quickstart, скачиваем и устанавливаем.
Это нам дает возможность прямо из 1С в командной строке вызывать системные функции для работы с Яндекс.Облаком.
Далее мы:
-
Регистрируемся, получаем имя пользователя и пароль
-
В 2017 году этого было достаточно, чтобы начать работать. Сейчас, чтобы начать распознавать аудио-звонки, нам нужно создать платежный аккаунт и закинуть туда определенную сумму денег – бесплатного распознавания уже нету.
-
Далее мы создаем сервисный аккаунт, это связано с безопасностью – с каталогами Яндекс.Облака нельзя работать под общим аккаунтом, там для каждого объекта создается свой сервисный аккаунт и ему назначаются нужные права конкретно на эти объекты. В принципе, это правильно, но это немного усложнило работу.
Когда мы зарегистрировались, получаем OAuth-токен.
Как было показано предыдущих слайдах, мы установили Curl, и с его помощью запускаем команду yc init, которая привязывает профиль CLI на данном компьютере к Облаку.
В этой команде мы задаем, куда привязать профиль:
-
к какому облаку;
-
к какому каталогу;
-
и в какой зоне доступности будут происходить наши вычисления – у Яндекса на данный момент есть три зоны доступности (Владимирская, Рязанская и Московская область), где происходит расшифровка звонков.
После того как мы получили OAuth-токен, мы в принципе можем начать работать.
На данном слайде показано, для чего нужно создавать сервисный аккаунт – сервисному аккаунту мы назначаем права на использование ресурсов и каталогов.
У Яндекса есть ограничение – с одного компьютера можно запускать не более 20 потоков.
Поскольку я укладывался во все лимиты Яндекс.Облака, у меня было:
-
одно облако;
-
один каталог;
-
и два ресурса – расшифровка звонков и хранение в Yandex Object Storage.
Если если вам нужна более масштабная расшифровка звонков, то необходимо поднимать, допустим, две виртуальных машины и на них на Яндексе регистрировать два облака – это позволит масштабироваться.
Итак, мы зарегистрировались, получили OAuth-токен, теперь нужно получить IAM-токен.
IAM-токен имеет ограниченное время жизни – не более 12 часов. Соответственно, 2 раза в сутки он меняется. Поэтому если он нужен при работе, допустим, в 1С, его можно получить программно вызовом команды
yc iam create-token > » + IAMtoken
Как синтез речи используется в бизнесе
Синтез речи можно применять в следующих областях:
- Интеллектуальный IVR. Настройка голосового робота для того, чтобы он отвечал на запросы клиентов без привлечения живых операторов.
- Голосовые оповещения. Возможность доставлять важные уведомления своим клиентам по всему миру на их родном языке с помощью телефонных звонков.
- Озвучивание контента. С помощью синтеза речи можно озвучивать книги, SMS-сообщения, документы и сайты. Это упрощает задачу автоматизации в процессе создания контента для людей, у которых есть проблемы с чтением и письмом (например, нарушение зрения) или для тех, кому неудобно читать текст в данный момент и кто готов прослушать необходимую информацию.
- Создание голоса бренда. Искусственный интеллект может не только сэкономить деньги и время компании, но и стать ее фишкой. Искусственному голосу можно придать свой собственный характер, который будет ассоциироваться с брендом.
- Голосовые ассистенты. Голосовое управление упрощает все повседневные задачи людей: заказать ужин, купить товары и пр. Поэтому синтез речи используется при создании таких голосовых помощников, как Siri, Алиса, Маруся и других.
- Локализация обращений. Для международной компании достаточно затратно нанимать сотрудников, владеющих разными языками. В этом случае синтезированная речь выгоднее бизнесу, так как ее достаточно перевести на другой язык.
- Скрининг соискателей. Синтез речи можно использовать для автоматизации массового найма сотрудников. С помощью голоса можно проводить собеседования и отбирать кандидатов.
- Поддержка пользователей. Большинство колл-центров автоматизируют обращения. Голосовые роботы выполняют простые задачи, которые можно автоматизировать. Например, предоставить клиенту информацию об аккаунте, дать инструкцию по решению типичной проблемы и пр. Это помогает людям сконцентрироваться на более сложных проектах.
- Голосовые уведомления. Голосовые роботы могут обзванивать клиентов для того, чтобы уведомлять их о новых акциях и рекламных предложениях или проводить опросы для сбора маркетинговой информации.
Голосовые движки: мужские и женские
Движки синтеза речи — это специальное ПО, своего рода драйвера, необходимые для того, чтобы компьютер мог «заговорить» (т.е. для преобразования текста в речь). Движков сейчас в сети сотни: есть как платные, так и бесплатные. Наилучшее качество чтения, конечно же, показывают платные движки.
Важное замечание: движок синтеза речи не имеет никакого дизайна или интерфейса. После его установки в систему — вы не заметите ровным счетом никаких изменений! Чтобы работать с движком — вам нужна какая-нибудь программа для чтения текстов: Балаболка, Говорун, Ice Reader и пр., чуть выше я приводил те, которые «мне по душе» )
Вот поэтому, кстати, часто пользователи ругают ту или иную программу, что она не может прочитать русский текст (или вообще не может). Просто они забывают о необходимости установки речевого движка.
Пару слов про стандарты…
Голосовые движки могут быть выполнены в разных стандартах (так называемых), самые основные три: SAPI 4, SAPI 5 или Microsoft Speech Platform (примечание: почти в каждой программе для чтения, вы можете выбрать речевой движок).
SAPI 4
Добротный стандарт, был актуален десяток лет назад. На сегодняшний день устарел, и на современных компьютерах/ноутбуках его использование не оправдано.
SAPI 5
Почти все современные голосовые движки построены на этом стандарте (как платные, так и бесплатные). Наиболее популярный стандарт, можно найти движок с мужским, женским, детским голосами.
Microsoft Speech Platform
Microsoft Speech Platform – большой набор инструментов для разработчиков, которые позволяют реализовывать возможность преобразования текста в речь.
это набор инструментов, позволяющих разработчикам различных приложений, реализовывать в них возможность преобразования текста в голос.
Примечание! Чтобы синтезатор речи работал, необходимо:
Microsoft Speech Platform — Runtime – серверная часть платформы, предоставляющая API для программ;
Microsoft Speech Platform — Runtime Languages – языки для работы серверной части.
Более подробно об этом здесь — https://msdn.microsoft.com/en-us/library/hh361572.aspx
Несколько голосовых движков
Тext-to-speech engines Дигало // Николай
Сайт: http://www.digalo.com/index.htm
Очень популярный русский голосовой движок (голос мужской!). Подойдет для большинства программ, которые умеют читать текст голосом. На мой скромный взгляд, один из лучших общедоступных движков для синтеза речи (на русском языке). Кроме русского, кстати, на сайте разработчика доступны движки еще для нескольких языков. Минус: без регистрации работает всего две недели.
Acapela // Голосовой движок (модуль) Алена
Сайт: http://www.acapela-group.com/
Алёнка — относительно новый русский женский речевой движок от компании Acapela. Работает по стандарту SAPI-5 с частотой 22 КГц. Некоторые пользователи считают, что голос у «Алены» приятнее, чем у «Николая».
Голосовой движок (модуль) Катерина 2
Компания разработчик: ScanSoft RealSpeak
Довольно неплохой речевой движок с женским голосом. После доработки движка, он стал сопоставим с «Николаем». Существенному обновлению подверглась фонетическая база движка, изменен алгоритм постановки ударений (что положительно сказалось на звучании), устранена проблема со скоростью произношения.
RHVoice
Сайт: http://tiflo.info/rhvoice/
RHVoice — это многоязычный синтезатор речи с открытым исходным кодом. Можно использовать в ОС Windows и Linux. Синтезатор совместим с SAPI5. Разработчик синтезатора — Ольга Яковлева.
Кстати, движок основан на речевой базе, записанной дикторами. Русские голоса «Елена» и «Ирина» доступны для скачивания на официальном сайте.
IVONA Tatyana/Maxim
Сайт: https://www.ivona.com/us/about-us/voice-portfolio/
Станет ли движок самым используемым — не знаю, время покажет!
Кстати, как думаете, будет ли когда-нибудь разработан речевой движок, который не отличишь от голоса обычного человека? Или может он уже есть, а я о нем не слышал… (скиньте название!)
Программы для озвучки текста
Если вам нужно постоянно озвучивать большие объемы текста из электронных документов, то самый удобный вариант — установить специальные приложения, которые умеют работать с файлами разного формата.
Балаболка
Балаболка — бесплатная программа озвучки для Windows от российских разработчиков. Она поддерживает работу с любыми голосовыми движками, установленными в системе. В ее интерфейсе есть стандартные инструменты для управления воспроизведением: пауза, остановка, перемотка, изменение скорости и громкости.
«Балаболка» умеет читать вслух текст из буфера обмена, произносить набираемые на клавиатуре фразы, озвучивать содержимое редактора или загруженных в нее файлов в форматах AZW, AZW3, CHM, DjVu, DOC, DOCX, EML, EPUB, FB2, FB3, HTML, LIT, MOBI, ODP, ODS, ODT, PDB, PDF, PPT, PPTX, PRC, RTF, TCR, WPD, XLS, XLSX.
Результат обработки «Балаболка» сохраняет как аудиофайл в форматах WAV, MP3, MP4, OGG и WMA. У нее также есть возможность сохранения текста внутри файлов MP3 для дальнейшего отображения в виде субтитров в медиапроигрывателе.
Govorilka
Govorilka — ещё одна программа для озвучки с минималистичным интерфейсом. Поддерживает голосовые движки устаревшего стандарта SAPI 4, в том числе на иностранных языках.
По умолчанию Govorilka озвучивает текст голосом стандартного движка Microsoft. В ее составе есть инструменты управления, традиционные для программ такого типа: воспроизведение, пауза, остановка, изменение скорости, громкости и высоты голоса. Одновременно в ней можно открыть до 8 вкладок с разными фрагментами текста.
Несмотря на простоту и устаревший интерфейс, «Говорилка» всё еще актуальна. Она умеет распознавать текстовые документы в разных форматах объёмом до 2 Гб и сохранять результат обработки в MP3 и WAV.
eSpeak
eSpeak — бесплатная программа для озвучки текста, доступная на Windows, macOS, Linux и Android. Она использует голосовые движки, установленные в системе, а также добавляет к ним несколько своих.
Версия этого приложения для Windows имеет максимально простой интерфейс и управление. Текст, который нужно прочитать, достаточно вставить в поле посредине окна, а затем нажать “Speak”.
Максимальный размер текста здесь явно не определен, но приложение справляется с большими объёмами. Также у него есть возможность читать тексты из файлов с расширением TXT, другие форматы не поддерживаются.
Для управления скоростью чтения в eSpeak используется ползунок Rate. Если вы хотите сохранить прочитанный текст в аудиофайл, нажмите на кнопку «Save to .wav» и задайте имя записи.
В мобильной версии приложения для Android аналогичная функциональность, разве что нет возможности сохранить текст в аудио.
Acapela TTS
Acapela Group разрабатывает программы для всех популярных операционных систем: Windows, macOS, Linux. Android, iOS. Среди главных достоинств этого софта — поддержка большого количества языков и отличное качество голоса. Мощные движки хорошо обучены и имеют развёрнутую справочную базу, которая позволяет им говорить правильно и выразительно.
Однако все продукты Acapela коммерческие. Установить приложение на компьютер или телефон можно бесплатно, но без купленного голосового движка в них нет никакого смысла. Стоимость одного пакета — 3,99 евро. Прежде чем оплачивать покупку, вы можете прослушать демо голоса с произвольным текстом, чтобы определить, подходит ли вам такое звучание.
ICE Book Reader Professional
Если вы ищите программу, которая будет озвучивать целые книги, то попробуйте ICE Book Reader Professional. Это приложение поддерживает различные форматы текстовых документов: TXT, HTML, XML, RTF, DOC и DOCX, PALM (.PDB и .PRC), PSION/EPOC (.TCR), Microsoft Reader (.LIT), Microsoft HELP files (.CHM) и FictionBook файлы (все версии) (.FB2, .XML). А для чтения в нем используются голосовые движки стандарта SAPI 4 и 5.
Программа умеет превращать книги в MP3/WAV-файлы. Это значит, что вы можете из любого произведения, доступного в текстовом формате, сделать аудиокнигу.
Скорость преобразования текста в голос в этом приложении увеличивается за счёт одновременного использования нескольких модулей синтеза речи.
SIP телефон(софтфон) для 1С:Предприятия 8 и IP АТС (виртуальная и офисная) Промо
«АТС.Ринголайн» и «Ringophone» — это современный взгляд, комплексное решение для организации телефонии в офисе, которое работает прямо из коробки. Решения направлены на организации, где главный упор сделан на коммуникацию и взаимоотношения с клиентами.
RingoPhone 1С — это бесплатный sip телефон, выполненный в виде внешней обработки для 1С. Данная панель телефонии разработана для любых конфигураций 1С:Предприятия 8. RingoPhone работает с АТС на базе Asterisk и провайдерами, которые поддерживают SIP протокол. IP телефония набирает огромную популярность и всё больше возможностей открывается при объединении телефонии и CRM системы. Возможность встроить телефон в свою CRM систему, позволяет осуществлять управление не только на уровне АТС, но и на уровне самого телефона.
АТС.RingoLine изначально создавалась с учётом интеграции с современными CRM системами. CRM системам доступно менять любые настройки АТС. Такие как: создание пользователей, добавление и удаление операторов колл-центра, возможность задавать переадресацию сотрудникам, получать информацию о звонках с АТС, а возможность доработки позволит заложить новые алгоритмы распределения звонков по сотрудникам в зависимости от данных в CRM системе.
1 стартмани
Популярные голосовые движки
Звучание голоса в синтезаторе речи зависит от того, какой в нем используется движок. Например, в русских версиях Windows установлен “электронный диктор” Microsoft Irina. Если в синтезаторе речи нет другого движка, то по умолчанию будет говорить именно она. При этом выбор голосов на самом деле очень богатый. Среди популярных русских движков можно выделить:
- Alyona от Acapela Group
- Татьяна и Максим от Ivona
- Ольга и Дмитрий от Loquendo
- Милена, Катерина и Юрий от Nuance
- Николай от Speech Cube Elan
Движки отличаются тембром голоса, эмоциональной окраской, количеством встроенных словарей, которые определяют правильность речи. Например, Николай читает текст практически без эмоций, поэтому с ним сложно воспринимать художественные тексты, а Ольга и Дмитрий от Loquendo, наоборот, используют разные стили речи. Все перечисленные движки работают по стандарту SAPI 5, который применяется на Windows, начиная с версии XP.
Большинство движков представлены в двух вариантах — мужской и женский голос. Детских голосов мало. Даже на сайте Acapela Group, одного из лидеров индустрии, меньше 10 языков, для которых доступны голоса детей.
Как сказано выше, голосовые движки облегчают процесс изучения иностранных языков. Например, Lernout&Hauspie предлагает для этого бесплатные голоса с американским и британским акцентами английского,а также голландским, испанским, итальянским и другим произношением. Большое количество движков разработала компания Cepstral. У них также есть бесплатная версия электронного диктора, однако при ее использовании постоянно появляется окно с предложением перейти на платный тариф.
Несмотря на то, что голосовые движки становятся всё более технологичными, добиться 100% совпадения с живой человеческой речью не удалось пока никому. Вам достаточно услышать несколько предложений, чтобы понять, что говорит робот. При изучении иностранных слов не стоит полагаться только на произношение программ — они нередко ошибаются. Но если ваша задача — простое озвучивание информации на русском, то можно использовать любой движок, в базе которого есть этот язык.
Чтобы добавить голосовой движок в Windows, достаточно его скачать и установить как обычную программу. После этого он появится в списке доступных. Но для использования голосов необходима сторонняя программа или веб-сервис, так как сами движки не имеют графического интерфейса.
Как масштабироваться при больших количествах звонков
Вначале, в 2017 году, у меня была обработка, которая распознавала короткие аудиозаписи.
В дальнейшем я перешел на распознавание длинных аудио – сейчас расскажу, почему.
Короткие аудиозаписи распознаются следующим образом:
-
сначала одна обработка ожидания проходит по списку звуковых файлов, назначает им, в каком потоке они будут отправлены в Яндекс, и завершает свою работу;
-
далее запускается обработка каждого потока, которая берет только звонки, которые принадлежат этому потоку – это позволяет масштабироваться.
При моей нагрузке мне было достаточно четыре потока отправки на Яндекс-расшифровку.
Напомню, что это распознавание коротких аудио.
Чем различаются короткие аудио от длинных? Короткие аудио-файлы распознаются онлайн – это стоит дороже и размер файла коротких аудио должен быть не больше одного мегабайта (не больше 30 секунд).
Соответственно, берется звуковой файл телефонного звонка, он нарезается на кусочки по 30 секунд с помощью программы sox, о которой я говорил выше, и далее каждый кусочек отправляется на Яндекс-расшифровку.
Отправляется он последовательно:
-
сначала отправляется первый кусочек, дожидается ответ и записывается в поле расшифровки справочных звонков;
-
далее отправляется второй кусочек, и далее третий – и так, пока не распознали весь звонок.
-
если все хорошо и ни один из кусочков не вернул ошибок, тогда помечаем звонок как обработанный.
Все это хорошо работало где-то с 2017 года по осень 2019, когда начались проблемы с тем, что при обработке телефонного звонка, нарезанного на шесть кусков, два из них могли вернуть ошибку. При повторной отправке через несколько минут снова один кусок мог вернуть ошибку и т.д.
Проблему долго решали со службой поддержки Яндекса, но так и не смогли решить. Так как мне не требовалось именно онлайн-распознавание, они предложили перейти на офлайн-расшифровку длинных аудиозаписей.
Распознавание длинных аудиозаписей происходит вот так:
-
одна обработка перебирает телефонные звонки и создает элементы в справочнике «Звонки» «1С:Управление торговлей»;
-
далее она же отправляет эти звонки в Yandex Object Storage, получает на ссылку на загруженные файлы;
-
далее она же отправляет эти ссылки на расшифровку – у Yandex SpeechKit есть ограничение, что одна минута расшифровки занимает около 10 секунд;
-
при следующей итерации эта же обработка проверяет, расшифровались эти звонки или нет – если расшифровка готова, этот текст получается и записывается в элемент справочника.
Поскольку в данном случае расшифровка производится не в онлайн-режиме, общение с Яндексом происходит очень быстро.
Единственная нагрузка – когда заливаешь звуковой телефонный разговор на Yandex Object Storage. Но в принципе, при 30 мегабит интернета это занимает несколько секунд. Напомню, что размеры wav-файлов и так достаточно маленькие, тем более что менеджеры у нас обычно общаются по 10-15 минут, не больше.
У распознавания длинных аудио есть свои лимиты – один гигабайт на размер файла или не более 4 часов. Но у нас ни один из менеджеров данный лимит не превысил.
Первоначально при распознавании коротких аудио у меня возникла проблема с нагрузкой на систему – отправка кусочков аудио у меня на тот момент была реализована через функции 1С, мне нужно было запускать 1С в четырех потоках, и каждый из потоков общался с Яндексом. Потоки могли подвисать, их нужно было перезапускать.
В дальнейшем я перешел на Curl – я в 1С запускаю Curl, он кушает меньше памяти, соответственно, он уже общается с Яндексом по отправке кусочков данных. В этом варианте зависания были решены.
При распознавании длинных аудио я тоже все общение с Яндексом вынес в Curl – 1С только запускает внешнюю команду, а все дальнейшие действия уже осуществляется через Curl.
Работа с файлами телефонных звонков
Какая ситуация с телефонией у нас была на предприятии:
-
У нас аналоговая АТС – аналоговые линии.
-
Дополнительно мы докупили комплекты SPRecord – можно перейти на сайт SPRecord, посмотреть, что это за устройство. Оно вешается параллельно аналоговой линии, записывает разговор и преобразует его в цифру – все звуковые файлы у него хранятся в формате *.wav без сжатия.
Соответственно, то, о чем я рассказываю, подходит для старых телефонных сетей. В новых цифровых сетях это уже решается гораздо проще – например, у MANGO есть отдельный сервис расшифровки телефонных звонков и отправка их на на почту.
Итак, у нас на фирме была аналоговая АТС, и все звонки записывались в формате *.wav.
Начинали мы это делать еще в 2017 году, и за это время по текущую дату записано 118 тысяч звонков.
Объем файлов за месяц занимает примерно 5 гигабайт (по данным марта 2020 года).
Что нужно сделать, чтобы как-то обработать эти файлы? Я использовал бесплатную кросс-платформенную утилиту Sox Sound eXchange. Она вызывается из командной строки и с ее помощью можно прямо из 1С выполнить следующие действия:
-
получить длительность аудио – по команде
sox —i -d input.wav > output.txt -
поменять дискретизацию – по команде
sox —i -r » input.wav > output.txt -
обрезать файл – по команде
sox input.wav output.wav trim 20
Обрезку я использовал для исходящих звонков, где у нас обычно 20 секунд занимает дозвон – эти 20 секунд можно спокойно обрезать, чтобы сэкономить на расшифровке звонка.
У Яндекса расшифровка кратна 15 секундам, соответственно даже если вы отправляете одну секунду, вы платите за 15. Обрезав 20 секунд мы экономим на одном такте распознавания.
С аналоговой телефонии мы снимаем файлы в несжатом виде, в формате *.wav, а в Yandex их нужно отправлять в специальном формате OggOpus.
Соответственно, используем бесплатную консольную конвертацию с помощью утилиты opensenc, которую можно скачать с сайта https://opus-codec.org/
Команда выглядит так:
На входе даем wav-формат, и получаем сжатые аудиоданные.