Como converter áudio em texto usando OpenIA

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

[ Hits: 4.121 ]

Blog: https://fabio.automatizando.dev

 


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

Como desabilitar o protocolo SSL3 no Nginx

Error: ENOSPC: System limit for number of file watchers reached [Resolvido]

Comando watch com saída em cores

Busca Reversa no Mongo Shell

Vim - como criar arquivo ou diretório pelo NERDTree

Leitura recomendada

Instalando agente do Zabbix em servidores Linux

Drivers do Dell 5470 no Ubuntu 14.04, Linux Mint ou derivados

Conectando com Claro 3G - modem Huawei 156B (Debian 5)

Icecast2 - Criando servidor de mídia básico

Instalando o Blas/Lapack no Debian e derivados

  

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