Главная → Блог → Как расшифровать аудио прямо из терминала
Как расшифровать аудио прямо из терминала
Иногда писать программу незачем: нужно разобрать десяток записей и забыть. Терминал справляется с этим лучше любого приложения — один вызов curl превращает файл в текст, а короткий скрипт обрабатывает всю папку.
Один файл
curl https://voicesscribe.com/v1/audio/transcriptions \
-H "Authorization: Bearer $VS_KEY" \
-F file=@call.ogg \
-F model=whisper-1
Ответ приходит в JSON. Чтобы получить только текст, пропустите его через jq:
curl -s https://voicesscribe.com/v1/audio/transcriptions \
-H "Authorization: Bearer $VS_KEY" \
-F file=@call.ogg -F model=whisper-1 | jq -r .text
Ключ держите в переменной окружения: команды с ключом в тексте оседают в истории оболочки и попадают в логи.
Другие форматы ответа
Поле response_format задаёт вид результата прямо в запросе:
# готовые субтитры сразу в файл
curl -s https://voicesscribe.com/v1/audio/transcriptions \
-H "Authorization: Bearer $VS_KEY" \
-F file=@lecture.ogg -F model=whisper-1 \
-F response_format=srt -o lecture.srt
# чистый текст без обёртки JSON
curl -s https://voicesscribe.com/v1/audio/transcriptions \
-H "Authorization: Bearer $VS_KEY" \
-F file=@note.ogg -F model=whisper-1 \
-F response_format=textВся папка одним скриптом
#!/bin/bash
set -euo pipefail
for f in recordings/*.ogg; do
out="${f%.ogg}.txt"
[ -f "$out" ] && continue
echo "обрабатываю $f"
curl -s --fail-with-body https://voicesscribe.com/v1/audio/transcriptions \
-H "Authorization: Bearer $VS_KEY" \
-F file=@"$f" -F model=whisper-1 \
| jq -r .text > "$out"
done
Проверка на существующий файл делает скрипт повторяемым: прерванный запуск продолжится с того места, где остановился, и уже обработанные записи не будут оплачены дважды.
Диагностика
Флаг --fail-with-body заставляет curl вернуть ненулевой код и показать тело ошибки — без него скрипт молча запишет в файл текст ошибки вместо расшифровки. Полезные приёмы:
- Показать только код ответа: добавить -o /dev/null -w "%{http_code}\n".
- Посмотреть заголовки запроса и ответа: флаг -v.
- Проверить формат файла перед отправкой: ffprobe покажет реальный кодек, а не расширение.
Попробуйте на своих записях. Регистрация занимает минуту, бесплатных минут хватает, чтобы оценить качество.
Получить ключ бесплатноЧастые вопросы
Нужен ли jq?
Не обязательно: без него в файл попадёт JSON целиком. Либо запросите response_format=text и получите чистый текст сразу.
Как не потерять ключ в истории команд?
Держите его в переменной окружения или в файле с ограниченными правами, который подгружается в оболочку.
Скрипт останавливается на первой ошибке — как продолжить?
Уберите set -e или оберните вызов в проверку кода ответа, записывая проблемные файлы в отдельный список для повторного прогона.
Работает ли это в Windows?
Да, в PowerShell есть curl.exe, а синтаксис флагов тот же. Для скриптов удобнее WSL или Git Bash.
Читайте также
- Как построить пакетную транскрибацию архива записей — Как расшифровать тысячи записей и ничего не потерять: очередь работ, параллельность, повторные попытки, продолжение после сбоя и контроль расходов до запуска.
- Ошибки API распознавания речи и что они означают — Разбор кодов ответа API транскрибации: почему приходит 401, 400, 413, 429 и 502, как это чинить и как правильно повторять неудачные запросы.
- Какой формат аудио выбрать для распознавания речи — mp3, wav, ogg, opus, m4a и webm в задаче распознавания речи: на что влияет битрейт, зачем моно и 16 кГц, как уложиться в лимит размера файла.