1. Visão geral dos modelos de fala

1.1. Introdução aos modelos TTS e STT da OpenAI

Modelo Texto-para-Fala (TTS)

O modelo TTS da OpenAI pode converter dados de texto em saída de fala. Esse processo envolve análise de texto, aplicação de algoritmos de síntese de fala e ajustes na qualidade do som. Ele permite que o computador leia qualquer texto escrito, tornando o conteúdo mais compreensível e acessível. O TTS é uma tecnologia importante para pessoas com deficiência visual, motoristas ou qualquer pessoa que prefira receber informações por meio da audição.

Modelo Fala-para-Texto (STT)

Correspondendo ao TTS, o modelo STT pode converter informações de fala em texto escrito. Ao processar a entrada de áudio original, o sistema STT primeiro realiza detecção de fala, seguida por extração de características. Ele mapeia o sinal de áudio para o vocabulário usando modelos acústicos e de linguagem, gerando, por fim, a saída de texto. A tecnologia STT é amplamente utilizada em reconhecimento de fala, transcrição de reuniões e geração de legendas em tempo real.

1.2. Cenários de Aplicação

  • Leitura em voz alta de blogs
  • Geração de fala multilíngue

3. API de Texto-para-Fala

3.1. Início Rápido

Nesta seção, demonstraremos como converter rapidamente texto em fala usando o comando curl e um cliente Python. Seja você um desenvolvedor ou um usuário não técnico, é possível gerar facilmente arquivos de fala enviando simplesmente uma solicitação à API.

Enviando Solicitações Usando o Curl

Para gerar fala usando a ferramenta de linha de comando curl, siga estas etapas:

  1. Certifique-se de que o curl esteja instalado em seu sistema e de que você tenha uma chave de API válida da OpenAI.
  2. Use o seguinte comando curl para converter texto em fala:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Hoje é um ótimo dia para criar produtos que as pessoas amam!",
    "voice": "alloy"
  }' \
  --output fala.mp3

No comando acima, $OPENAI_API_KEY representa sua chave de API, o campo input é o texto que você deseja converter, o campo model especifica o modelo de voz a ser usado, e o parâmetro voice seleciona a voz. Aqui, escolhemos a voz sintética alloy. A opção final --output especifica o nome e formato do arquivo de saída.

Usando o Cliente Python

Se preferir usar a linguagem de programação Python, você pode utilizar o seguinte exemplo de código:

from openai import OpenAI

cliente = OpenAI()

resposta = cliente.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="Hoje é um ótimo dia para criar produtos que as pessoas amam!"
)

resposta.stream_to_file("saida.mp3")

Neste trecho de código, importamos a biblioteca openai e criamos uma instância do cliente da OpenAI. Em seguida, utilizamos o método audio.speech.create para enviar uma solicitação, especificando o modelo, voz e texto a ser convertido. Por fim, usamos o método stream_to_file para salvar o fluxo de fala gerado em um arquivo.

3.2. Escolha de Qualidade de Áudio e Voz

Selecionar a qualidade de áudio e a voz adequada para o seu projeto é uma etapa crucial para garantir a melhor experiência do usuário. Nossa API oferece duas opções de modelos de qualidade de áudio: tts-1 e tts-1-hd.

  • tts-1: Proporciona menor latência, adequado para aplicativos em tempo real, mas com qualidade de áudio relativamente inferior.
  • tts-1-hd: Fornece saída de áudio de maior qualidade, adequada para necessidades de geração de fala de alta qualidade não em tempo real.

Além disso, a API de TTS da OpenAI oferece várias opções de voz:

  • Alloy
  • Echo
  • Fable
  • Onyx
  • Nova
  • Shimmer

Dependendo dos requisitos do projeto e do público-alvo, é possível testar diferentes amostras de voz para escolher a voz mais adequada. Considere fatores como estilo de fala, taxa de fala e entonação para encontrar uma voz que transmita emoções e profissionalismo apropriados.

3.3. Formatos de Saída e Idiomas Suportados

A API de TTS da OpenAI utiliza o formato de saída MP3 por padrão, mas também oferece suporte a diversos outros formatos de áudio:

  • Opus: Adequado para streaming e comunicação pela internet, com baixa latência.
  • AAC: Utilizado para compressão de áudio digital, preferido por plataformas como YouTube, Android e iOS.
  • FLAC: Formato de compressão de áudio sem perdas utilizado por entusiastas de áudio para arquivamento.

Em termos de suporte de idiomas, a API segue principalmente o modelo Whisper, oferecendo uma ampla gama de opções de idiomas para suportar muitos idiomas nacionais.

3.4. Funcionalidade de Streaming de Áudio em Tempo Real

Para atender às necessidades de aplicações em tempo real, nossa API oferece suporte para streaming de áudio em tempo real. Abaixo está um exemplo em Python para implementar o streaming de áudio em tempo real:

from openai import OpenAI

cliente = OpenAI()

resposta = cliente.audio.speech.create(
    model="tts-1",
    voice="alloy",
    input="Olá mundo! Isto é um teste de streaming.",
)

resposta.stream_to_file("output.mp3")

4. API de Conversão de Fala em Texto

4.1. Início Rápido

Nesta seção, vamos introduzir principalmente a funcionalidade da API da OpenAI para conversão de fala em texto.

Primeiro, você precisa ter uma chave de API válida da OpenAI e preparar um arquivo de áudio.

Você pode usar o comando curl para enviar uma solicitação POST contendo o arquivo de áudio. Substitua OPENAI_API_KEY com sua chave de API e defina o caminho do arquivo corretamente.

curl --request POST \
  --url https://api.openai.com/v1/audio/transcriptions \
  --header 'Authorization: Bearer OPENAI_API_KEY' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/caminho/para/seu/arquivo/de/audio.mp3 \
  --form model=whisper-1

Após executar o comando acima, você receberá uma resposta formatada em JSON contendo informações do texto transcrito.

Por exemplo:

{
  "text": "Imagine a ideia mais louca que você já teve e esteja curioso sobre como ela poderia escalar para algo que é 100, 1.000 vezes maior. ..."
}

4.2. Formatos e Tamanhos de Arquivos Suportados

Esta API suporta diversos formatos comuns de arquivos de áudio para atender a diferentes necessidades em diferentes cenários. Os formatos de arquivo suportados incluem, mas não se limitam a mp3, mp4, mpeg, mpga, m4a, wav, webm, etc. Isso permite que os usuários processem facilmente arquivos de áudio de várias fontes.

Quanto ao tamanho do arquivo, a API atual tem um limite de até 25MB. Isso significa que se seu arquivo de áudio for maior do que 25MB, será necessário dividi-lo em vários segmentos menores do que 25MB ou usar um formato de compressão mais eficiente. Por exemplo, os formatos mp3 e opus geralmente fornecem compressão eficiente, reduzindo o tamanho do arquivo sem sacrificar muito a qualidade do áudio.

Se você encontrar um arquivo maior do que 25MB, pode considerar usar a biblioteca PyDub em Python para segmentar seu áudio:

from pydub import AudioSegment

arquivo_de_audio = AudioSegment.from_file("seu_arquivo_de_audio_grande.mp3")

intervalo = 10 * 60 * 1000  # 10 minutos

segmentos = make_chunks(arquivo_de_audio, intervalo)

for i, segmento in enumerate(segmentos):
    nome_segmento = f"segmento_audio{i}.mp3"
    segmento.export(nome_segmento, format="mp3")

No código acima, a função make_chunks segmentará um arquivo de áudio grande em vários segmentos com intervalo de tempo de 10 minutos. Esses segmentos estão todos dentro do limite de tamanho de arquivo exigido pela API e podem ser carregados separadamente na API da OpenAI para transcrição.

Por favor, note que, embora o PyDub nos forneça uma maneira fácil de lidar com arquivos de áudio, ainda é recomendado prestar atenção extra à segurança e estabilidade de qualquer software de terceiros ao usá-lo. A OpenAI não fornece garantias para software de terceiros.