Transcrição de áudio
Transcreva áudio com o endpoint OpenAI-compatible POST /v1/audio/transcriptions. Modelos compatíveis, limites de arquivo, exemplos com curl e Python, além da API opcional de tarefas assíncronas por URL.
Áudio compatível com OpenAI
Use o formato JSON da OpenAI para síntese de fala. A resposta contém bytes de áudio e usa MP3 por padrão.
curl https://getvibeapi.com/v1/audio/speech \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "chatterbox-turbo",
"input": "Hello from GetVibe",
"voice": "default",
"response_format": "mp3",
"speed": 1
}' \
--output speech.mp3Os modelos disponíveis são tts, gemini-tts, gemini-3.8-flash-tts, gemini-3.8-flash-lite-tts, gemini-3.8-flash-tts-lite, chatterbox-tts, kokoro-tts, chatterbox-turbo e gpt-4o-mini-tts. response_format (mp3, opus, aac, flac, wav, pcm) e speed usam o formato da OpenAI; as páginas dos modelos listam quaisquer limites nativos mais restritos. gpt-4o-mini-tts aceita as 13 vozes da OpenAI (alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer, verse, marin, cedar) e o campo opcional instructions, que orienta a entrega em linguagem simples, por exemplo, "fale de maneira calma e acolhedora".
Clonagem de voz
O modelo voice-clone-tts fala qualquer texto com a sua própria voz, inclusive em russo. Primeiro, crie a voz uma única vez a partir de uma gravação de 3–60 segundos (wav ou mp3, até 10 MB) — isso é gratuito. consent: true é obrigatório: você confirma que é a sua própria voz ou que tem o consentimento de quem ela pertence. Até 20 novas vozes a cada 24 horas.
curl https://getvibeapi.com/api/media/voices \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My voice",
"consent": true,
"audio_url": "https://example.com/my-voice.wav"
}'A resposta contém voice.id (voice_…). Passe-o como opts.voice_id em uma solicitação de mídia comum; mecanismo qwen3 (padrão, melhor qualidade) ou chatterbox (econômico). Cobrado por 1000 caracteres de texto, até 4000 caracteres por solicitação.
Voz Premium — a semelhança mais próxima. Adicione "engine": "premium" ao criá-la; a gravação deve ter 10–60 segundos. A criação custa $2.00 uma única vez e só é cobrada se a voz for criada: nada é cobrado em caso de erro, e um saldo abaixo do preço retorna 402 antes que a gravação seja enviada. Sintetize com um mecanismo MiniMax: minimax-speech-2.8-hd, minimax-speech-2.6-hd ou minimax-speech-02-hd ($0.125 por 1000 caracteres) e suas versões Turbo ($0.075); os nomes antigos premium / premium-turbo significam speech-02. Logo após a criação, falamos uma palavra curta com a voz — a MiniMax exclui uma voz que não seja usada por 7 dias. Uma voz Premium excluída para de funcionar imediatamente, mas o serviço de síntese não oferece exclusão, e a taxa de criação não é reembolsada.
curl https://getvibeapi.com/api/media/generate \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "voice-clone-tts",
"prompt": "Hello! This is my cloned voice.",
"opts": { "voice_id": "voice_Ab12Cd34Ef56Gh78Ij90", "language": "auto" }
}'Uma voz pode ser usada somente pela sua conta. Liste-as com GET /api/media/voices; exclua uma com DELETE /api/media/voices/{voice_id} — a gravação também é excluída do serviço de síntese. Nós não mantemos a gravação.
Voz do ElevenLabs. Quando ativado, GET /api/media/voices lista os preços em pricing.elevenlabs_*. Crie a voz com engine: "elevenlabs" a partir de uma gravação de 10–60 segundos (os espaços para vozes são limitados: quando estão ocupados, a resposta é 409 voice_slots_full), depois sintetize com elevenlabs-v4 ou elevenlabs-v4-turbo — estabilidade, similarity_boost, velocidade, seed, idioma e tags de áudio, como [laughs], diretamente no texto. O segundo arquivo de resultado é um JSON de legendas com a temporização das palavras. Preço por 1000 caracteres: v4 $0.044, v4 Turbo $0.022 — o preço promocional até October 12, 2026, depois $0.16 e $0.08. O armazenamento custa $0.70 por voz por mês (o primeiro mês está incluído; depois, a cobrança é mensal no dia de criação da voz). Se o seu saldo for muito baixo, a voz será mantida por mais um mês e excluída somente se a taxa continuar não paga na cobrança seguinte — enviaremos um e-mail antes. Consulte todas as suas vozes e o status delas em My voices.
Várias gravações. Uma voz do ElevenLabs aceita até 25 gravações: na criação, como um array samples (cada {"audio_url"} ou {"audio_base64"}, wav/mp3 de até 10 MB, juntas de até 50 MB e com duração de 10–300 segundos), e posteriormente com POST /api/media/voices/{voice_id}/samples {"samples": […]}. A adição é gratuita; a taxa de armazenamento continua sendo uma por voz. Com "remove_background_noise": true, o ElevenLabs remove gratuitamente o ruído de fundo das gravações (desativado por padrão: isso pode piorar uma gravação limpa).
Transcrição compatível com OpenAI
Envie uma solicitação multipart com file e model. Os arquivos estão limitados a 50 MB. A resposta é { text: "..." }.
curl https://getvibeapi.com/v1/audio/transcriptions \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-F [email protected] \
-F model=whisper-large-v3 \
-F language=en
# → {"text":"..."}Os modelos disponíveis são speech-to-text, whisper-large-v3-turbo, nemotron-asr-multilingual e whisper-large-v3. Os preços atuais por minuto aparecem no catálogo de modelos de áudio. Os arquivos devem ter de 1 byte a 50 MB.
Marcações de tempo e legendas
response_format segue o padrão da OpenAI: json (padrão, { text }), text (texto simples), verbose_json (JSON com language, duration e segments[] — id, start, end, text em segundos), srt e vtt (legendas prontas). Para obter marcações de tempo por palavra, envie timestamp_granularities[]=word com verbose_json (campo words[]: word, start, end); segment e word podem ser combinados. O preço não depende do formato.
# SRT subtitles (or vtt); verbose_json returns JSON with segments[] and words[]
curl https://getvibeapi.com/v1/audio/transcriptions \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-F [email protected] \
-F model=whisper-large-v3 \
-F response_format=srt
curl https://getvibeapi.com/v1/audio/transcriptions \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-F [email protected] \
-F model=whisper-large-v3 \
-F response_format=verbose_json \
-F "timestamp_granularities[]=segment" \
-F "timestamp_granularities[]=word"
# → {"task":"transcribe","language":"en","duration":5.9,"text":"...",
# "segments":[{"id":0,"start":0.03,"end":0.71,"text":"Hello!"}, ...],
# "words":[{"word":"Hello!","start":0.03,"end":0.51}, ...]}Os timestamps vêm de whisper-large-v3, whisper-large-v3-turbo, nemotron-asr-multilingual, qwen3-asr-1.7b e speech-to-text (seus segmentos são construídos a partir dos tempos das palavras). universal-2, voxtral-small-24b-2507 e nemotron-3-diarization não retornam timestamps, por isso verbose_json / srt / vtt são rejeitados com 400 para eles antes de qualquer cobrança.
universal-2 não está disponível nessas rotas. O /api/transcribe mais antigo aceita um audio_url público, é executado de forma assíncrona e é ativado pelo operador com TRANSCRIBE_ENABLED; caso contrário, retorna 503.Transcrição de URL legada
Transcrição de áudio assíncrona a partir de uma URL pública. Você cria uma tarefa e consulta o resultado pelo nosso id.
Parâmetros de criação
| Parâmetro | Tipo | Descrição |
|---|---|---|
audio_urlreq. | string (URL) | Um link público para o arquivo de áudio. |
language | string | Código do idioma, por exemplo, ru, en (2-10 caracteres). Opcional — detectado automaticamente. |
redact_pii | boolean | Redação de dados pessoais. Ativada por padrão (conformidade com a 152-FZ); desativada somente mediante redact_pii: false explícito. |
Criar e consultar
A criação retorna 202 com { id, status: "processing" }. Consulte GET /api/transcribe/{id} até que o status seja success (ou fail); então a resposta conterá text, durationSec, priceRub.
# 1. create a transcription job (audio by public URL)
curl https://getvibeapi.com/api/transcribe \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://example.com/audio.mp3",
"language": "en",
"redact_pii": true
}'
# → {"id":"...","status":"processing"}