/spttx

bash script for access to Yandex SpeechKit longRunningRecognize

Primary LanguageShell

spttx

bash script for access to Yandex SpeechKit longRunningRecognize Ubuntu

Скрипт для упрощения работы с сервисом Yandex SpeechKit распознание длинных аудио (работает на Ubuntu).

  1. Складываете звуковой файл для распознания,
  2. Запускаете скрипт,
  3. Получаете файл с распознанным текстом.

Перед началом:

Чтобы скрипт работал нужно завести пользовательский аккаунт на Яндекс-облаке, создать бакет, создать сервисный аккаунт, получить ключ API, положить на счёт денежку. Это всё делается в интерфейсе Яндекс Облака.

Подробная инструкция по подключению от Яндекса

Для общения скрипта с этой инфраструктурой нужно ставить себе CLI Яндекса и Амазона:

CLI Yandex.Cloud

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

Скрипт предложит:

  • создать папку logs (для хранения логов),
  • папки text и audio,
  • проверит наличие ffmpeg (для конвертации аудио),
  • pandoc (для сохранения результатов в док-файлы)
  • at (для работы отложенного распознания)

    если кто-то из них не установлен запустится sudo apt install. Так как папка audio пуста, скрипт предложит сложить туда файл и выключится.


    Работа со скриптом:

    1. В папку audio складываете файл (названия лучше латиницей),
    2. Запускаете скрипт (в общей папке)
    ./spttx.sh
    1. получаете готовый результат в папке 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. Языки русский, казахский

    2. Числа: словами или цифрами

    3. Фильтр обсценной лексики (включен или отключен)

    4. Время отложенного распознания: можно выбрать секунды-минуты-часы-дни и колличество (от 1 до 60)

    5. TOKEN - добавление токена.

    6. Название облака - адрес бакета, куда загружать файл

      PS

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