[Яндекс API, Asterisk] Запись разговоров на астериск и их распознавание на Yandex.Speech
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Небольшой проект. Простая реализация. Заметка по диалплану астериск, командам консоли и АПИ распознавания Яндекса. Вы прочитаете и не наступите на мои грабли, я прочитаю через полгода-год и вспомню, что делал.Задача: получать текстовое представление разговоров, записанных на астериске.Сначала запись разговораMixMonitor записывает разговор. Обычно MixMonitor записывает в один канал обоих собеседников. Нам надо получить каждый канал в отдельном файле. Поэтому есть две опции r и t, где мы можем указать файлы для записи разных каналов. Также используется параметр b - для начала записи в момент начала разговора. С 16 астериска была опция S - для синхронизации t и r файлов, (в тот, который позже начался записываться добавлялась тишина в начало файла). С 18 астериска опцию S убрали, т.к. это стало поведением по умолчанию, а добавили контр-опцию n. Но я использую b, поэтому эти дополнительные пляски мне не потребовались.
MixMonitor(record-o.wav,br(record-r.wav)t(record-t.wav),command)
Затем также в команде MixMonitor'а мы укажем команду для выполнения после записи. В рамках этой команды мы нормализуем каждую запись - выровняем по уровню и затем смерджим две записи в один двухканальный файл.
sox --norm record-t.wav record-t-norm.wav // нормализация записи одной стороны разговораsox --norm record-r.wav record-r-norm.wav // нормализация записи второй стороны разговораsox record-r-norm.wav record-t-norm.wav --channels 2 --combine merge record.wav // сливаем записи в один файл
Теперь итоговый файл можно прослушать в стерео режиме - в одном ухе слышно одного участника разговора, во втором - второго участника разговора. Интересный эффект присутствия, как будто по ролям читают, но не всем нравится такой формат прослушивания. Для прослушивания можно использовать файл record-o.wav - первый файл из MixMonitor'а, записан традиционным методом, привычным для уха.Файлы в формате wav достаточно много места занимают. Поэтому для хранения я их конвертирую в mp3 и копирую на хранилище.Еще пара вариантов как организовать раздельную запись каналов на астерискеhttps://howto.a17.su/asterisk/call-recording.htmlhttps://voxlink.ru/kb/asterisk-configuration/integraciya-asterisk-so-speech-analytics/Теперь распознаваниеДля распознавания дальше использую сервис Яндекса.У Яндекса есть несколько API для распознавания: короткие аудио, длинные аудио и потоковое. Короткие - это до 30 секунд, поэтому пользуюсь API для длинных аудио. Длинные аудио - передать можно wav или ogg файлы. С wav файлами дело не пошло, и в самом API еще необходимо указывать дополнительные параметры для wav-формата, поэтому я прежде чем отправлять на распознавание переконвертирую в ogg. Яндекс определит, что ogg двухканальный и распознает его по двум каналам без дополнительных параметров
/usr/bin/ffmpeg -i record.wav -acodec libopus record.ogg // команда переконвертации в ogg
Также есть пара нюансовВо-первых, длинные аудио (прежде чем распознать) необходимо закачать в облако Яндекса, а в сервис распознавания передать уже ссылку на запись в облаке.Хранилище Яндекса является S3-совместимым, поэтому для закачивания подойдет любая утилита или библиотека работающая с S3-хранилищем Амазона. Для хранения файлов в хранилще используются buckets.Документация на Яндекс.StorageВторое, сначала мы создаем задание на распознавание, получаем его id. А уже потом по его id чекаем на наличие результата (при этом количество операций на проверку статуса заданий ограничено, немало, конечно, но и не бесконечно).Документация на Яндекс.Облако Распознавание длинных аудиоДокументация на Яндекс.Облако Отслеживание статуса операцииТак получилось, что мое тестирование было в августе 2020, и попало на какой-то факап очереди заданий. И поэтому распознавания производились очень долго - по 2 и более часов.Т.к. в Яндекс.Облаке и поддержка платная, отдельной строкой, то на мой тикет не отвечали оперативно. В чате же Яндекс.Облака достаточно быстро сообщили, что есть проблемы. Ну, а позже и на тикет ответили. И очередь починили. в штатном режиме все работает вполне оперативно. По тарификации распознаванияХранилище: место и операции - это тарифицируется. Распознавание - тоже. Все понемногу. Использую корпоративный тариф. Тарификация одноканальных и двухканальных записей одинаковая, т.е. по деньгам нет разницы распознать одну минуту одноканальной записи или одну минуту двух каналов (а вот три канала будет уже вдвое дороже).Посчитать на Тарификаторе Яндекса (раздел SpeechKit)Ключи доступа. Тут главное не запутаться, так как у вас будут ключи и от сервиса распознавания (API ключ), и от хранилища S3 (статический ключ). Оба вида ключа на сервисном аккаунте. Надеюсь, заметка сэкономит вам несколько минут, и вы быстрее реализуете свой проект по необходимости.
===========
Источник:
habr.com
===========
Похожие новости:
- [Карьера в IT-индустрии] Насколько вкусные печеньки в Яндексе?
- [Серверная оптимизация, Облачные вычисления, Сетевые технологии, Облачные сервисы] Облачный десант: как мы интегрировали публичное облако с CDN и что из этого получилось
- [Машинное обучение, Гаджеты, Научно-популярное, Звук] Шумно и стрессово? Или шумно и весело? Ваш телефон может слышать разницу (перевод)
- [IT-инфраструктура, Сетевые технологии, Asterisk, Сетевое оборудование] Мобильность на рабочем месте. Обзор Snom M325
- [Разработка игр, Компьютерное железо, Старое железо] Яндекс вновь запустил голосование за ретроигры. Финалисты Retro Games Battle 2020
- [Высокая производительность, Анализ и проектирование систем, Серверная оптимизация, Распределённые системы] Архитектура отказоустойчивого планировщика задач. Доклад Яндекса
- [JavaScript, Node.JS, Яндекс API, Голосовые интерфейсы] Салют от Сбера в Яндекс.Облаке
- [Здоровье, IT-компании] Как помочь тем, кто помогает
- [Веб-аналитика, Управление e-commerce, Повышение конверсии, Управление продажами] Яндекс.Советник — как часто с вашего сайта уходят в Маркет
- [Open source, Яндекс API, Kotlin, Телемедицина, Ember.js] Как мы начали социальный Open Source проект Brain-Up по созданию платформы развития слухового восприятия
Теги для поиска: #_jandeks_api (Яндекс API), #_asterisk, #_jandeks (яндекс), #_oblako (облако), #_asterisk (астериск), #_raspoznavanie_rechi (распознавание речи), #_jandeks_api (
Яндекс API
), #_asterisk
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:23
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Небольшой проект. Простая реализация. Заметка по диалплану астериск, командам консоли и АПИ распознавания Яндекса. Вы прочитаете и не наступите на мои грабли, я прочитаю через полгода-год и вспомню, что делал.Задача: получать текстовое представление разговоров, записанных на астериске.Сначала запись разговораMixMonitor записывает разговор. Обычно MixMonitor записывает в один канал обоих собеседников. Нам надо получить каждый канал в отдельном файле. Поэтому есть две опции r и t, где мы можем указать файлы для записи разных каналов. Также используется параметр b - для начала записи в момент начала разговора. С 16 астериска была опция S - для синхронизации t и r файлов, (в тот, который позже начался записываться добавлялась тишина в начало файла). С 18 астериска опцию S убрали, т.к. это стало поведением по умолчанию, а добавили контр-опцию n. Но я использую b, поэтому эти дополнительные пляски мне не потребовались. MixMonitor(record-o.wav,br(record-r.wav)t(record-t.wav),command)
sox --norm record-t.wav record-t-norm.wav // нормализация записи одной стороны разговораsox --norm record-r.wav record-r-norm.wav // нормализация записи второй стороны разговораsox record-r-norm.wav record-t-norm.wav --channels 2 --combine merge record.wav // сливаем записи в один файл
/usr/bin/ffmpeg -i record.wav -acodec libopus record.ogg // команда переконвертации в ogg
=========== Источник: habr.com =========== Похожие новости:
Яндекс API ), #_asterisk |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:23
Часовой пояс: UTC + 5