ShvIA

Docs · API compatível com OpenAI

Áudio

Voz para texto e texto para voz, nos formatos da OpenAI.

Os dois endpoints usam a sua chave de API, contam no limite de requisições /v1 compartilhado e não contam na sua cota de tokens.

POST/v1/audio/transcriptions#

Envie o áudio como multipart/form-data.

CampoObrigatórioNotas
filesimo áudio. Um tipo que o servidor não aceita devolve 400; um arquivo acima do limite de tamanho devolve 413
languagenãoum código de idioma ISO. Quando omitido, vale o padrão do servidor, que é o português, a menos que o operador tenha mudado, então defina-o para outros idiomas
response_formatnãojson (padrão) ou text. verbose_json, srt e vtt devolvem 400
model, prompt, temperature, timestamp_granularities[]nãoaceitos e ignorados. O modelo é o do servidor
bash
curl -s "$SHVIA_URL/v1/audio/transcriptions" \
  -H "Authorization: Bearer $SHVIA_API_KEY" \
  -F "file=@meeting.mp3" \
  -F "language=en"
json
{ "text": "Welcome, everyone. Let us start with the numbers." }

Com response_format=text o corpo é a transcrição pura. Os tipos de áudio aceitos são WebM, Ogg, MP4, M4A, AAC, MP3, WAV e FLAC. O limite de tamanho padrão é 15 MiB, definido pelo operador.

POST/v1/audio/speech#

Envie JSON.

CampoObrigatórioNotas
inputsimo texto. O texto além do limite do servidor, 4000 caracteres por padrão, é cortado em silêncio
voicenãoum nome de voz. É repassado ao servidor de voz como está, então os nomes válidos são os dele
response_formatnãomp3, opus, aac, flac, wav ou pcm. O padrão é definido pelo operador, normalmente mp3
model, speed, instructionsnãoaceitos e ignorados
bash
curl -s "$SHVIA_URL/v1/audio/speech" \
  -H "Authorization: Bearer $SHVIA_API_KEY" -H "Content-Type: application/json" \
  -d '{ "input": "Your order has shipped.", "response_format": "mp3" }' \
  --output answer.mp3

A resposta são os bytes do áudio, em buffer e enviados inteiros, com Cache-Control: no-store. O Content-Type segue o formato que você pediu. pcm é rotulado como audio/wav.

Erros#

O formato da OpenAI, como em chat completions:

StatuscodeQuando
400invalid_request_errorfalta file ou input, um formato não suportado, ou um tipo de áudio não aceito
401invalid_api_keya chave não é válida
403permission_deniedo servidor de voz roda em outra máquina e o grupo da sua conta só pode usar os servidores locais do operador
413invalid_request_erroro arquivo de áudio é grande demais
429nenhumlimite de requisições atingido
502upstream_erroro servidor de voz não pôde ser alcançado ou respondeu com erro
503audio_not_configuredo operador não configurou a voz