Como converter áudio em texto usando OpenIA

Publicado por Fábio Berbert de Paula em 04/03/2023

[ Hits: 2.986 ]

Blog: https://mestrefabio.com

 


Como converter áudio em texto usando OpenIA



Dica simples de como transformar um áudio em texto usando a API da OpenAI.

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!

Outras dicas deste autor

Redirecionando saída de comando para arquivo com sudo

Jogo da Forca no Linux

Erro: "W: Possible missing firmware... for module" [Resolvido]

Como atualizar seu Ubuntu para 14.10 ou superior

Configurando temas no Bashtop

Leitura recomendada

CBQ + Cache Full (Squid)

Personalizar mensagem de erro no Squid

Forçando montagem automática de dispositivos móveis em Sabayon

Firefox: adicionar add-ons baixados previamente

MATE Desktop no OpenMandriva Lx 2014.0

  

Comentários
[1] Comentário enviado por removido em 04/03/2023 - 08:38h

Cara, excelente dica! Não sabia que tinha esse recurso no próprio OpenAI!

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)?

[2] Comentário enviado por SamL em 04/03/2023 - 14:06h

Porra, Fábio foi ligeiro, eu tava criando um artigo sobre o tal VALL-E para justamente criar voz sintetizada via texto.
Achei uma versão free do sintetizador no github e tava estudando ele como colocar pra gerar vozes a partir de uma amostra de áudio.

Mas vai ficar pra depois hahaha


https://nerdki.blogspot.com/ acessa ai, é grátis
Não gostou? O ícone da casinha é serventia do site!

[3] Comentário enviado por SamL em 04/03/2023 - 14:08h


[2] Comentário enviado por SamL em 04/03/2023 - 14:06h

Porra, Fábio foi ligeiro, eu tava criando um artigo sobre o tal VALL-E para justamente criar voz sintetizada via texto.

Confundi as bolas, na verdade o VALL-E sintetiza voz, enquanto tua dica gera texto do áudio.
Well, we vai continuar the article. hahhaa

[4] Comentário enviado por fabio em 06/03/2023 - 03:20h


[1] Comentário enviado por ru4n em 04/03/2023 - 08:38h

Cara, excelente dica! Não sabia que tinha esse recurso no próprio OpenAI!

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)?



As principais ferramentas de mercado que fazem isso em 2023 estão listadas aqui: https://www.unite.ai/best-text-to-speech-generators/

[5] Comentário enviado por fabio em 06/03/2023 - 03:21h


[2] Comentário enviado por SamL em 04/03/2023 - 14:06h

Porra, Fábio foi ligeiro, eu tava criando um artigo sobre o tal VALL-E para justamente criar voz sintetizada via texto.
Achei uma versão free do sintetizador no github e tava estudando ele como colocar pra gerar vozes a partir de uma amostra de áudio.

Mas vai ficar pra depois hahaha


https://nerdki.blogspot.com/ acessa ai, é grátis
Não gostou? O ícone da casinha é serventia do site!


Não conheço esse VALL-E, aguardando o artigo ansiosamente!!!

[6] Comentário enviado por maurixnovatrento em 12/03/2023 - 10:55h


transformar áudio em texto usando open-ai dá pra usar isso no c++?

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10

[7] Comentário enviado por fabio em 14/03/2023 - 12:23h


transformar áudio em texto usando open-ai dá pra usar isso no c++?


Não programo em C++, mas teoricamente é possível fazer isso em qualquer linguagem. Basta pegar os parâmetros passados pelo comando curl e adaptá-los a uma HTTP Request em C++ e depois tratar a resposta. Você basicamente usará a API da OpenAI em seu código.

[8] Comentário enviado por maurixnovatrento em 18/03/2023 - 16:59h


[7] Comentário enviado por fabio em 14/03/2023 - 12:23h


transformar áudio em texto usando open-ai dá pra usar isso no c++?


Não programo em C++, mas teoricamente é possível fazer isso em qualquer linguagem. Basta pegar os parâmetros passados pelo comando curl e adaptá-los a uma HTTP Request em C++ e depois tratar a resposta. Você basicamente usará a API da OpenAI em seu código.



Pode ser. Mas se tiver uma biblioteca para o c/c++, pra mim seria melhor.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts