Содержание
  1. STT и TTS: различие и поддерживаемые модели
  2. Выбор сценария и модели
  3. Проверяемый пример распознавания
  4. Прямой Groq API: синтез с response_format
  5. Проверка текстового ответа и аудиофайла
  6. Диагностика модели, языка, файла и ключа
  7. Границы внешнего Pipecat-примера
  8. Частые вопросы
Гайды

Groq для голоса: распознавание и синтез через API

26 октября 2026 · 8 минут чтения

Groq для голоса: распознавание и синтез через API — это два разных эндпоинта. Распознавание (STT) живёт на https://api.groq.com/openai/v1/audio/transcriptions и .../audio/translations с моделями Whisper. Синтез (TTS) — на https://api.groq.com/openai/v1/audio/speech с моделями Orpheus. Ниже — выбор модели, два учебных запроса и проверка результата.

STT и TTS: различие и поддерживаемые модели

В документации Groq распознавание и синтез разведены по эндпоинтам и моделям. STT-эндпоинт transcriptions превращает аудио в текст, translations переводит речь в английский текст. Модели: whisper-large-v3-turbo — многоязычная, оптимизированная под скорость; whisper-large-v3 — многоязычная с высокой точностью. Обе поддерживают транскрипцию, перевод доступен только у whisper-large-v3.

TTS-эндпоинт audio/speech делает обратное — превращает текст в звук. Модели: canopylabs/orpheus-v1-english (английский, выразительный синтез с управлением вокалом) и canopylabs/orpheus-arabic-saudi (арабский, саудовский диалект). Языки у TTS-моделей задокументированы явно: английский и арабский.

Различие принципиальное: STT принимает файл или URL, TTS принимает строку текста. STT возвращает JSON с текстом и метаданными, TTS возвращает аудиопоток. Один ключ GROQ_API_KEY обслуживает оба направления, но эндпоинты и параметры у них разные.

Направление Эндпоинт Модели Вход Выход
STT /audio/transcriptions, /audio/translations whisper-large-v3-turbo, whisper-large-v3 аудиофайл или URL текст, JSON
TTS /audio/speech canopylabs/orpheus-v1-english, canopylabs/orpheus-arabic-saudi текст аудиофайл

Выбор сценария и модели

Выбор начинается с задачи. Нужно получить текст из записи — это STT. Нужно озвучить текст — это TTS. Смешивать их в одном запросе нельзя: у них разные тела запроса и разные ответы.

Внутри STT документация даёт развилку. Приложение чувствительно к ошибкам и требует многоязычности — whisper-large-v3. Нужна многоязычность и лучшее соотношение цены и производительности — whisper-large-v3-turbo. Перевод на английский доступен только у whisper-large-v3, поэтому для задачи перевода выбор сужается до одной модели.

Внутри TTS выбор идёт по языку. Английский текст — canopylabs/orpheus-v1-english. Арабский саудовский диалект — canopylabs/orpheus-arabic-saudi. Документация Orpheus описывает управление вокалом через указания в тексте, например [cheerful] в примере.

Задача Модель Почему
Транскрипция, чувствительная к ошибкам whisper-large-v3 высокая точность, многоязычность
Быстрая многоязычная транскрипция whisper-large-v3-turbo оптимизирована под скорость
Перевод речи на английский whisper-large-v3 перевод поддерживается этой моделью
Озвучка английского текста canopylabs/orpheus-v1-english английский, управление вокалом
Озвучка арабского текста canopylabs/orpheus-arabic-saudi саудовский диалект

Проверяемый пример распознавания

Учебный пример из документации Groq: транскрипция файла через Python SDK. Пакет ставится командой pip install groq, клиент инициализируется без аргументов и читает ключ из окружения. Перед запуском задайте GROQ_API_KEY в окружении и замените YOUR_AUDIO.wav своим файлом. Пример печатает распознанный текст; для метаданных сохраняйте возвращённый объект SDK. Редакция эти запросы не выполняла.

PYTHON20 строк
import os
import json
from groq import Groq

client = Groq()

filename = os.path.dirname(__file__) + "/YOUR_AUDIO.wav"

with open(filename, "rb") as file:
    transcription = client.audio.transcriptions.create(
        file=file,
        model="whisper-large-v3-turbo",
        prompt="Specify context or spelling",
        response_format="verbose_json",
        timestamp_granularities=["word", "segment"],
        language="en",
        temperature=0.0
    )

print(transcription.text)

Что менять под себя: путь к файлу, model, language в формате ISO-639-1, prompt под контекст записи. Параметр prompt ограничен 224 токенами и задаёт стиль и написание незнакомых слов. response_format="verbose_json" нужен, чтобы получить таймстемпы; для чистого текста ставят text.

Документация отмечает ограничения входного файла: до 25 МБ на бесплатном тарифе и до 100 МБ на dev-тарифе, минимальная длина 0,01 секунды, минимальная тарифицируемая длина 10 секунд. Поддерживаются flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm. Из файла с несколькими дорожками транскрибируется только первая.

Прямой Groq API: синтез с response_format

Учебный пример синтеза из документации Groq. Запрос идёт напрямую на https://api.groq.com/openai/v1/audio/speech. Поле response_format по умолчанию равно "wav"; в примере оно задано явно.

ТЕРМИНАЛ
curl --fail https://api.groq.com/openai/v1/audio/speech \
  -X POST \
  -H "Authorization: Bearer $GROQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "canopylabs/orpheus-v1-english",
    "input": "Welcome to Orpheus text-to-speech. [cheerful] This is an example.",
    "voice": "austin",
    "response_format": "wav"
  }' \
  --output orpheus-english.wav

Четыре ключевых входа эндпоинта: model, input (текст для озвучки), voice (голос) и response_format. В примере на Python SDK тот же запрос идёт через client.audio.speech.create(...), а результат пишется в файл orpheus-english.wav методом write_to_file. В JavaScript-примере ответ превращается в буфер и сохраняется через fs.promises.writeFile.

Что менять под себя: model под язык, voice под нужный голос, input под свой текст, response_format под формат файла. Указание [cheerful] внутри input — часть текста.

Проверка текстового ответа и аудиофайла

Проверка STT начинается с текста. При response_format="verbose_json" ответ содержит сегменты с полями text, start, end, avg_logprob, no_speech_prob, compression_ratio. Документация Groq разбирает их как индикаторы качества.

avg_logprob около нуля означает высокую уверенность; значения вроде −0,5 и ниже указывают на возможные проблемы. no_speech_prob около нуля говорит, что это речь; значения ближе к единице указывают на тишину или неречевой звук. В примере Groq значение compression_ratio равно1.6637554 и названо нормальным. Это разбор конкретного ответа, поэтому одного совпадения с числом недостаточно для проверки любой записи. Сверьте распознанные слова с аудио.

При проверке TTS сначала посмотрите HTTP-статус, затем откройте файл в проигрывателе. Сравните произнесённый текст с input, начало и конец записи. Наличие расширения WAV само по себе не подтверждает, что в файле находится аудио. Если файл не создан, смотрят на код ответа и на то, был ли ответ записан в файл. Для Python это response.write_to_file(path), для JavaScript — запись буфера через файловую систему.

Что проверяем Где смотрим Признак нормы
Текст STT поле text осмысленный текст на нужном языке
Уверенность STT avg_logprob значение около нуля
Речь или тишина no_speech_prob значение около нуля
Повторы и границы слов compression_ratio и исходная запись Проверить подозрительные места на слух
Аудио TTS HTTP-ответ и файл в проигрывателе Запрос успешен, файл декодируется, речь соответствует тексту

Диагностика модели, языка, файла и ключа

Диагностика идёт по четырём осям. Модель: STT-модель нельзя передать в TTS-эндпоинт и наоборот — у них разные наборы идентификаторов. Если запрос отклонён, сверяют model со списком для конкретного эндпоинта.

Язык: для STT параметр language задаётся в формате ISO-639-1 и улучшает точность и задержку. Эндпоинт переводов принимает только en. Для TTS язык определяется моделью: английский текст идёт в orpheus-v1-english, арабский — в orpheus-arabic-saudi.

Входной файл: превышение лимита размера, неподдерживаемое расширение или файл короче 0,01 секунды дают ошибку. Документация советует для больших файлов использовать параметр url или нарезать аудио на перекрывающиеся сегменты. Для снижения задержки файлы конвертируют в wav, для уменьшения размера без потерь — в FLAC; пример команды ffmpeg в документации понижает частоту до 16 кГц и сводит в моно.

Ключ: SDK читает GROQ_API_KEY из окружения. Если переменная не задана, клиент не аутентифицируется. При прямой работе через curl ключ передаётся в заголовке Authorization: Bearer $GROQ_API_KEY.

Границы внешнего Pipecat-примера

Pipecat — отдельный фреймворк для голосовых агентов. В ней описан GroqTTSService, который отдаёт синтез через API Groq. Это адаптер фреймворка.

Различие важно для параметров. В Pipecat настройка формата вывода идёт через собственный параметр output_format и декодирование PCM. В прямом API Groq формат задаёт поле response_format в теле запроса. Это разные уровни: один принадлежит фреймворку, другой — API Groq.

Практический вывод: примеры из документации Pipecat стоит читать как инструкцию по настройке фреймворка. Для прямого вызова эндпоинта Groq опираются на документацию Groq. Смешение параметров двух уровней — частая причина того, что запрос не проходит.

Частые вопросы

Что такое tts groq?
Это синтез речи через эндпоинт Groq audio/speech. Он принимает текст, модель, голос и формат ответа, а возвращает аудио. Модели — canopylabs/orpheus-v1-english и canopylabs/orpheus-arabic-saudi. Языки у этих моделей задокументированы: английский и арабский.

Чем отличается groq speech to text от синтеза?
Распознавание принимает аудиофайл или URL и возвращает текст. Синтез принимает текст и возвращает аудио. Эндпоинты разные: /audio/transcriptions и /audio/translations против /audio/speech. Модели тоже разные: Whisper против Orpheus.

Какую модель Whisper выбрать?
Для чувствительных к ошибкам задач с многоязычностью документация советует whisper-large-v3. Для многоязычности с лучшим соотношением цены и производительности — whisper-large-v3-turbo. Перевод на английский поддерживает только whisper-large-v3.

Как задать формат ответа при синтезе?
Поле response_format в теле запроса к audio/speech. По умолчанию оно равно "wav". В учебном примере документации значение задано явно. Формат определяет расширение сохраняемого аудиофайла.

Почему запрос к Groq возвращает ошибку?
Проверяют четыре вещи: модель соответствует эндпоинту, язык задан в ISO-639-1, файл укладывается в лимиты размера и длины, ключ GROQ_API_KEY доступен клиенту. Для больших файлов документация предлагает параметр url или нарезку аудио.

Читайте также

3 материала