Utilizando o OpenAI Whisper
1. Instalando o whisper
Para instalar o whisper, rode:
pip install -U openai-whisper
2. Interagindo com o whisper no terminal
O seguinte comando transcreverá a fala em arquivos de áudio, usando o modelo
medium
:
whisper audio.flac audio.mp3 audio.wav --model medium
A configuração padrão (que seleciona o modelo small
) funciona bem para
transcrever inglês. Para transcrever um arquivo de áudio contendo fala em outro
idioma, você pode especificar o idioma usando a opção --language
:
whisper japanese.wav --language Japanese
Adicionar --task translate
irá traduzir a fala para o inglês:
whisper japanese.wav --language Japanese --task translate
Execute o seguinte para ver todas as opções disponíveis:
whisper --help
Veja tokenizer.py para a lista de todos os idiomas disponíveis.
3. Exemplo simples
O exemplo a seguir carrega um arquivo mp3
para que o whisper transforme-o em
texto:
import whisper
model = whisper.load_model("base")
result = model.transcribe("audio.mp3")
print(result["text"])
O próximo exemplo utiliza o argparse para criar uma ferramenta um pouco mais robusta para interagir com o whisper no terminal:
import argparse
import whisper
def main():
parser = argparse.ArgumentParser(
description="Transcreve áudio em texto usando o Whisper."
)
parser.add_argument(
'-m', '--model', type=str, required=True,
help="O nome do modelo a ser usado (e.g. small, medium)."
)
parser.add_argument(
'-f', '--file', type=str, required=True,
help="Caminho para o arquivo de áudio"
)
args = parser.parse_args()
model = whisper.load_model(args.model)
result = model.transcribe(args.file)
print(result["text"])
if __name__ == "__main__":
main()
4. Utilizando a API da OpenAI
Apesar de não ser um modelo muito pesado (principalmente se estiver utilizando GPU), para alguns computadores a resposta do whisper pode ser muito lenta. Nesses casos, pode-se utilizar a API da OpenAI para rodar o modelo no servidor deles (opção paga). O exemplo a seguir demonstra como fazê-lo:
from openai import OpenAI
client = OpenAI()
with open("speech.mp3", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
response_format="text"
)
print(transcript)