Como converter áudio em texto usando OpenIA
Como converter áudio em texto usando OpenIA
Primeiramente, você precisa de uma API key. Para isso, acesse o site da OpenAI e crie uma conta. Em seguida acesse suas API keys, clique em:
Create new secret key
copie a chave gerada e salve em algum lugar seguro.
Em seguida exporte a chave para uma variável de ambiente:
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Agora basta fazer um POST para a API da OpenAI com o arquivo de áudio e o modelo de transcrição que você deseja usar. No exemplo abaixo, estou usando o modelo whisper-1, que é o modelo de transcrição de voz em ambiente silencioso.
curl -s https://api.openai.com/v1/audio/transcriptions \
-X POST \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H 'Content-Type: multipart/form-data' \
-F file=@/home/fabio/mp3/luiza-banho.mp3 \
-F model=whisper-1
O resultado será algo como:
{"text":"Luiza, tomar banho!"}
Se quiser extrair o texto do JSON, basta usar o comando jq:
jq -r '.text' <<< '{"text":"Luiza, tomar banho!"}'
Logo, o comando completo ficaria:
curl -s https://api.openai.com/v1/audio/transcriptions \
-X POST \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H 'Content-Type: multipart/form-data' \
-F file=@/home/fabio/mp3/luiza-banho.mp3 \
-F model=whisper-1 | jq -r '.text'
E claro, não se esqueça de alterar o caminho do arquivo de áudio do exemplo acima.
Podemos ainda converter o comando acima em script, que recebe o arquivo de áudio como parâmetro:
vim ~/.local/bin/audio2text
#!/bin/bash # variábel de ambiente OPENAI_API_KEY é requerida, # declare-a em ~/.bashrc AUDIO_FILE=$1 curl -s https://api.openai.com/v1/audio/transcriptions \ -X POST \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H 'Content-Type: multipart/form-data' \ -F file=@$AUDIO_FILE \ -F model=whisper-1 | jq -r '.text'
chmod +x ~/.local/bin/audio2text
$ audio2text /home/fabio/mp3/luiza-banho.mp3
Luiza, tomar banho!
Até a próxima!
Eu estava usando o Assembly AI para fazer a mesma coisa em um projeto, só que a transcrição em PT-BR deles é ruim e já estava migrando para outra API (Deepgram)!
Sabe me dizer se dá para fazer o oposto também (texto para áudio)?