Голос и аудио: сценарии с речевыми моделями
Транскрипция звонков, голосовые боты, разбор совещаний. Voxtral и MiMo на аудио: как подать файл, обработать длинные записи и не потерять смысл.
Сергей Панов
Голос и аудио: сценарии с речевыми моделями
Речевые модели закрывают три частых сценария: транскрипция (звонки, совещания в текст), понимание аудио (сразу вытащить решения и задачи из записи) и голосовые боты (речь на входе и выходе). Под каждый — свой подход.
Транскрипция
Базовый сценарий — превратить запись в текст. Запись передаётся в сообщении, в ответ приходит расшифровка:
import base64with open("call.mp3", "rb") as f: b64_audio = base64.b64encode(f.read()).decode()tr = client.chat.completions.create( model="voxtral-small", messages=[{"role": "user", "content": [ {"type": "text", "text": "Расшифруй запись дословно, на русском."}, {"type": "input_audio", "input_audio": {"data": b64_audio, "format": "mp3"}}, ]}],)print(tr.choices[0].message.content)Voxtral Small хорошо держит русский и разговорную речь с шумом и перебивками. Язык записи указывайте в запросе явно — автоопределение иногда ошибается на коротких или многоязычных фрагментах.
Вопросы по записи без расшифровки
Модели для текста и звука вроде MiMo v2.5 принимают аудио напрямую и сразу отвечают на вопросы по нему — не нужен промежуточный текст. Это удобно для «вытащи из звонка договорённости и дедлайны»:
resp = client.chat.completions.create( model="mimo-v2.5", 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 распознаётся хуже.
- Тишина и шум. Длинные паузы и фоновый гул модель иногда «дорисовывает» словами. На важных расшифровках проверяйте подозрительно гладкие куски.
- Стоимость по длительности. Аудио считается по минутам/токенам записи, а не по словам. Часовые звонки набегают — считайте на реальной выборке.
Начните с транскрипции одного типа звонков, оцените точность на русском вручную по десятку записей, и только потом достраивайте понимание и голосовой цикл.