Вопрос «как расшифровать большой аудиофайл» прилетает к нам в пятницу вечером. Трёхчасовой вебинар на полтора гигабайта почтой не уходит, вкладка браузера умирает на семидесяти процентах. Дальше самодеятельность. Кто-то режет запись наугад, кто-то жмёт её до телефонной трубки. Знакомо?
Главное подозрение я сниму сразу. Длина файла нам безразлична. Мы тратим 1–2% от длительности, получасовое совещание расшифруем за 25 секунд, час речи за минуту, три часа за три минуты. На тех же тридцати минутах Yandex SpeechKit тратит две минуты, OpenAI около десяти. Ломается у вас канал, формат и терпение.
Почему большой аудиофайл превращается в проблему
Сначала определитесь, какой у вас «большой». Файл бывает тяжёлым физически. Несжатый WAV с диктофона (44,1 кГц, 16 бит, стерео) съедает около 10 МБ на минуту, поэтому трёхчасовое заседание подбирается к 1,8 ГБ, а мобильный аплоад разваливается на первом переключении вышки.
Бывает, что вес нормальный, а пугает вас длительность.
А третью беду вы увидите вечером. Три часа речи разворачиваются в документ, который никто не прочитает подряд.
Дорого ли это? Нет. Три часа по тарифу от 0,29 ₽/мин обойдутся вам рублей в 52, пятичасовая конференция около 87. Дорого обходится другое. Чем длиннее запись, тем хуже она записана, к третьему часу микрофон сдвинули локтем. Мы держим WER 7,10% (WAcc 92,9%) на бенчмарке из семи датасетов, но снимали мы его на чистых записях. Вашу чините на входе.
Как разделить большой аудиофайл и не потерять слова на стыке
Вопрос «как разделить большой аудиофайл» я начинаю со встречного. Зачем вы его делите? Нам дробить файл незачем, мы берём его целиком. Резать стоит, когда канал слабый и переотправить вы хотите только неудавшийся кусок. Ещё когда части нужны вам сами по себе (дни заседания).
Режьте по паузам. Разрез на тридцатой минуте попадёт в середину слова, и оно пропадёт дважды. Нарезка по паузам делается в аудиоредакторе, вы находите тишину и оставляете пару секунд нахлёста. А если кусков тридцать? Тут за дело берётся ffmpeg. Команда ffmpeg -i zapis.wav -f segment -segment_time 1800 -c copy chast_%03d.wav нарежет запись получасовыми кусками, флаг -c copy копирует поток без повторного сжатия. Но ffmpeg рубит по таймеру, стыки вы проверяете глазами.
Ломается при нарезке вот что.
- Тайм-коды. Отсчёт в каждом куске стартует с нуля, к третьей части прибавляйте час.
- Спикеры. Диаризация нумерует голоса заново, «Спикер 2» из второй части станет у вас «Спикером 1».
- Порядок. Называйте части с ведущим нулём (chast_001, chast_002), иначе десятая встанет после первой. Мы так однажды собрали текст задом наперёд.
- Контекст. Мы опираемся на соседние слова, и разрезанная посередине фраза распознаётся хуже целой.
Жалко тайм-коды? Тогда оставьте запись целой и уменьшите вес.
Как подготовить аудио к расшифровке и чем его конвертировать
Как подготовить аудио к расшифровке, вы решите за пару минут, и начинается всё с формата. Мы принимаем mp3, wav, m4a, ogg и aac файлом либо запись с микрофона. Поля для ссылки у нас нет, запись из облака вы сначала скачиваете файлом и потом грузите нам.
Конвертировать аудио вам нужно в двух случаях. Первый, файл несжатый. Час речи в WAV весит сотни мегабайт, в mp3 или m4a несколько десятков, и ffmpeg -i zapis.wav zapis.mp3 сделает это за проход. Второй, у вас видео, и тогда ffmpeg -i vebinar.mp4 -vn -c:a copy zvuk.m4a вытащит звуковую дорожку без перекодирования. В остальных случаях не трогайте.
Лёгкость файла вы оплачиваете полосой. На телефонной дорожке с её 8 кГц мы держим около 90% против 92,9% на чистой записи, и эта пара пунктов съедает фамилии и суммы. Одно перекодирование из несжатого в сжатое мы переживём, повторное даст вам артефакты. А если жать не хочется вовсе? У нас транскрибация wav в текст работает и с исходником, вопрос в терпении на аплоаде.
| Что на входе | Что делаем | Чем платите |
|---|---|---|
| WAV на три часа, 1,8 ГБ | жмём в mp3 или m4a | одно сжатие, речи некритично |
| MP4 вебинара | тащим звуковую дорожку | ничем, видеоряд не нужен |
| Конференция с перерывами | режем по перерывам | тайм-коды и спикеры заново |
| Файл из мессенджера | грузим как есть | он уже пожат |
Как расшифровать большой аудиофайл целиком
Файл вы привели в порядок, дальше скучное.
- откройте страницу, где живёт транскрибация аудио в текст, и загрузите файл; идёт встреча прямо сейчас, пишите с микрофона;
- включите деление на спикеров, диаризация разложит вам реплики по голосам;
- подождите, пока мы обработаем запись, на трёх часах это три минуты;
- заберите результат, txt для чтения, verbose_json для сегментов с тайм-кодами, srt или vtt для видео.
Сколько вы заплатите? Только за обработанные минуты, от 0,29 ₽/мин. Секунды мы округляем вниз, подписки нет, баланс не сгорает. Бесплатно попробуйте нас в Telegram-боте @VoicePalatineBot, до 100 транскрибаций в день. Но он ограничивает размер файла, многочасовой WAV туда не влезет.
А когда длинных записей у вас поток? Наш speech-to-text API принимает файлы и распознаёт поток по WebSocket, документацию мы держим на docs.speech.palatine.ru. Вебхуков у нас нет, статус задачи вы опрашиваете сами.
Отдельно для тех, у кого на записи зарплаты. Мы обрабатываем файлы в четырёх ЦОД Tier III в России, передаём по TLS, работаем по 152-ФЗ, на ваших записях модели не дообучаем. Языков у нас около сотни (русский и языки СНГ), но текст мы отдаём на языке записи. Казахская конференция станет казахским текстом, перевода мы не сделаем.
Что делать с расшифровкой на три часа речи
Кто прочитает три часа речи подряд? Никто, и вам не надо. Открывайте текст как базу. Поиск по слову приведёт вас туда, где обсуждали бюджет, тайм-код вернёт к секунде, диаризация подскажет, кто говорил. Формат verbose_json берите для скрипта, там мы отдаём сегменты с границами.
Резали запись? Собирайте обратно сразу, ко второй получасовой части прибавьте тридцать минут тайм-кодов, к третьей час. Через неделю вы не вспомните, какой кусок откуда.
Вычитывать всё подряд незачем, пройдитесь там, где ошибка дорого стоит. Суммы, даты, фамилии и отрицания в решениях, ведь «согласовали» и «не согласовали» отличаются одним словом. Минут десять на трёхчасовую запись.
Помните файл, который лежит у вас с прошлого месяца? Посмотрите, в чём он записан. WAV или mp4 вы приведёте к загружаемому виду одной командой ffmpeg. Три часа обойдутся вам рублей в 52 и три минуты ожидания, к концу перекура вы узнаете, о чём говорили во второй половине встречи.