Голос и аудио: сценарии с речевыми моделями
Транскрипция звонков, голосовые боты, разбор совещаний. Voxtral и Gemini на аудио: как подать файл, обработать длинные записи и не потерять смысл.
Сергей Панов
Голос и аудио: сценарии с речевыми моделями
Речевые модели закрывают три частых сценария: транскрипция (звонки, совещания в текст), понимание аудио (сразу вытащить решения и задачи из записи) и голосовые боты (речь на входе и выходе). Под каждый — свой подход.
Транскрипция
Базовый сценарий — превратить запись в текст. Подаёте файл, получаете расшифровку:
with open("call.mp3", "rb") as f: tr = client.audio.transcriptions.create( model="voxtral", file=f, language="ru", )print(tr.text)Voxtral хорошо держит русский и разговорную речь с шумом и перебивками. Указывайте language="ru" явно — автоопределение иногда ошибается на коротких или многоязычных фрагментах.
Понимание, а не только расшифровка
Мультимодальные модели вроде Gemini принимают аудио напрямую и сразу отвечают на вопросы по нему — не нужен промежуточный текст. Это удобно для «вытащи из звонка договорённости и дедлайны»:
resp = client.chat.completions.create( model="gemini-pro", messages=[{"role": "user", "content": [ {"type": "text", "text": "Это запись созвона. Выпиши принятые решения и задачи с ответственными."}, {"type": "input_audio", "input_audio": { "data": b64_audio, "format": "mp3"}}, ]}],)Длинные записи
Часовое совещание не влезет в один запрос и по контексту, и по лимитам. Стратегия:
- Транскрибируйте целиком через Voxtral (транскрипция масштабируется по длине).
- Полученный текст режьте на куски и суммаризируйте по частям.
- Собирайте частичные саммари в итоговое.
Для диаризации (кто что сказал) просите модель размечать реплики по говорящим, если запись это позволяет, — но точность разметки на пересекающейся речи падает, закладывайте проверку.
Голосовые боты
Полный цикл: речь → текст (Voxtral) → LLM обрабатывает → текст → речь (TTS). Узкое место — задержка: пользователь в телефонном разговоре не терпит пауз. Поэтому:
- На LLM-шаге ставьте Flash-модель и стриминг.
- Начинайте синтез речи, не дожидаясь конца генерации текста, — по предложениям.
- Держите реплики короткими: длинный ответ бота в голосе раздражает сильнее, чем в чате.
Грабли
- Термины и имена. Модель пишет «Yenisei» как «Енисей» или «Енисеи». Подавайте подсказку со списком имён/терминов в промпте, если API поддерживает, либо чистите постобработкой.
- Формат и битрейт. Слишком сжатый звук роняет точность. mp3/wav в нормальном качестве — ок, телефонный 8kHz распознаётся хуже.
- Тишина и шум. Длинные паузы и фоновый гул модель иногда «дорисовывает» словами. На важных расшифровках проверяйте подозрительно гладкие куски.
- Стоимость по длительности. Аудио считается по минутам/токенам записи, а не по словам. Часовые звонки набегают — считайте на реальной выборке.
Начните с транскрипции одного типа звонков, оцените точность на русском вручную по десятку записей, и только потом достраивайте понимание и голосовой цикл.