bash script for access to Yandex SpeechKit longRunningRecognize Ubuntu
Скрипт для упрощения работы с сервисом Yandex SpeechKit распознание длинных аудио (работает на Ubuntu).
- Складываете звуковой файл для распознания,
- Запускаете скрипт,
- Получаете файл с распознанным текстом.
Подробная инструкция по подключению от Яндекса
Для общения скрипта с этой инфраструктурой нужно ставить себе CLI Яндекса и Амазона:
AWS CLI (это для работы с бакетом Яндекса)
Создаете папку (любую) распаковываете туда 4 файла, задайте разрешение на исполнение всех .sh.
chmod 775 *.sh
Запускаете ./settings
./settings.sh
прописываете API-KEY (выбираете 5 пункт в меню, вставляете API-KEY сервисного аккаунта Яндекса) либо можно вручную отредактировать файл data вставляйте через пробел после слова key. Задаёте имя облака в Яндекс облаке (пункт 6 в меню, или также вручную правьте data), без них работать не будет.
vim data
Запускаете ./spttx.sh
./spttx.sh
Скрипт предложит:
если кто-то из них не установлен запустится sudo apt install. Так как папка audio пуста, скрипт предложит сложить туда файл и выключится.
- В папку audio складываете файл (названия лучше латиницей),
- Запускаете скрипт (в общей папке)
./spttx.sh
- получаете готовый результат в папке text.
Скрипт расчитан на работу с одиночными файлами. Т.е. для каждого нового файла, нужно запускать скрипт снова.
При запуске скрита на экране будут отображены настройки и результаты проверки папок:
Расшифровка звука
Выбранные настройки:
1. Язык: русский
2. Числа: словами
3. Обсценная лексика (мат): мат вкл
4. Время отложенного распознания: 10 min
5. TOKEN yes
6. Название облака (https://storage.yandexcloud.net/<baket-name>/) <baket-name>
проверка установки ffmpeg: ok
проверка установки at: ok
проверка установки pandoc: ok
проверка папки audio: ok
проверка папки text: ok
проверка папки logs: ok
После скрипт проверяет папку audio, если там больше 1 файла, предлагает выбрать, какой именно распознать.
Выдаёт параметры файла (длительнсть, количество каналов, битрейт и др.), предлагает выбрать на сколько дорожек конвертировать (1-2 или оставить как в оригинале). Яндекс берет деньги за каждую дорожку.
НАЗВАНИЕ ФАЙЛА: ####.mp3
Duration: 00:05:29.16, start: 0.000000, bitrate: 32 kb/s
Stream #0:0: Audio: mp3, 48000 Hz, mono, fltp, 32 kb/s
______________^__________________
выбирайте параметры дорожек вручную
Введите 1 или 2, (N - конвертировать как в исходном):
Предлагается выбрать модель распознания, на данный момент доступны 4 штуки (для русского языка). Первые три распознают быстро, четвертый - отложенный (Яндекс обещает результат в течение суток), но пока скорость всех, одинаковая, цена разная, отложенная модель 4 в четыре раза дешевле.
Калькулятор выдаёт примерное время на распознание и цену конвертации. Начинается конвертация.
Выберете модель распознания
1. hqa
2. general
3. general:rc
4. deferred-general
0. exit
Введите выбор [0-4] > 4
deferred-general choosen
минут на выполнение примерно: .54
цена за один канал: .8225
оставляем как есть
Далее скрипт спрашивает, разрешение на загрузку в облако и отправку запроса на распознание (за эти действия будут списываться деньги с вашего счёта).
Для первых трёх моделей, запустится таймер, Яндекс обещает расшифровку в 10 раз быстрее хронометража оригинала. Т.е. часовой трек можно ждать через 6 минут.
Через расчётное время задержки будет отправлен запрос на получение результата, если он есть, то программа создаст документ док, и удалит все вспомгательные файлы (конвертированный аудио файл на локальном диске и в облаке, и все служебные файлы, кроме логов).
Если результат не готов, включится ещё один таймер на 10 секунд, и так будет продолжаться до получения результата (обычно на 2-3 повтор резльутат приходит).
При выборе модели deferred-general скрипт создаёт отдельный исполняемый файл (шаблон deferred.sh), его запуск планируется на время стандартного исполнения (в десть раз быстрее хронометража) плюс время отложенного (по умолчанию 2 минуты), можно поменять.
Когда наступает время исполнения скрипт запускается, если на сервере есть распознанный текст, он сохраняется и конвертируется в док, все служебные и вспомогательные файлы удаляются (в том числе сам скрипт).
для изменеия настроек запустите файл ./settings
./settings.sh
Доступны изменения:
-
Языки русский, казахский
-
Числа: словами или цифрами
-
Фильтр обсценной лексики (включен или отключен)
-
Время отложенного распознания: можно выбрать секунды-минуты-часы-дни и колличество (от 1 до 60)
-
TOKEN - добавление токена.
-
Название облака - адрес бакета, куда загружать файл
Предложенный скрипт - индивидуальный, чтобы его масштабривать, можно добавить базу данных, модуль авторизации, и в целом, одним аккаунтом может пользваться довольно большие коллективы. Реализуется очень несложно.