Transcrição de áudio com OpenAI Speech to Text e .NET

A transcrição de áudio emerge como uma ferramenta essencial em muitas aplicações, promovendo a acessibilidade e impulsionando a eficiência das interações humanas. Neste cenário, a fusão da API de Transcrição de Áudio da OpenAI com o ecossistema .NET oferece uma solução robusta e acessível para desenvolvedores que desejam enriquecer seus aplicativos com recursos avançados de inteligência artificial.

O que é transcrição de áudio?

Chamado de Speech to Text, este é um serviço avançado da OpenAI de processamento de linguagem natural (PLN) que utiliza modelos de linguagem treinados para converter áudio falado em texto escrito de maneira precisa e eficiente. Esta tecnologia é baseada em redes neurais profundas, que são técnicas de aprendizado de máquina inspiradas na estrutura e funcionamento do cérebro humano, especificamente projetadas para reconhecimento de padrões complexos, como a fala.

Como funciona o serviço de transcrição de áudio

O serviço de transcrição de áudio da OpenAI utiliza tecnologia avançada de inteligência artificial, incluindo redes neurais, para entender o que está sendo dito em um arquivo de áudio. Essa tecnologia foi treinada com uma grande quantidade de dados de áudio para garantir que as transcrições sejam precisas e confiáveis. Quando você envia um arquivo de áudio para o serviço, ele analisa o conteúdo em tempo real, capturando detalhes como o tom de voz, o ritmo da fala e o contexto da conversa. Isso permite que aplicativos automatizem a tarefa de transcrever áudio, tornando-a mais eficiente e acessível.

Aplicações comuns

A transcrição de áudio tem uma ampla variedade de aplicações, incluindo:

  • Legendagem de vídeos: adicione automaticamente legendas aos seus vídeos para torná-los acessíveis a um público mais amplo e melhorar a experiência do usuário.
  • Transcrição de reuniões: ao transcrever reuniões, você pode garantir que todos os participantes tenham acesso ao conteúdo discutido, mesmo que não tenham estado presentes, e facilitar o acompanhamento das ações acordadas.
  • Análise de chamadas: analise automaticamente chamadas telefônicas para extrair informações úteis, como tendências de atendimento ao cliente, feedback do usuário e muito mais.

Ao integrar a transcrição de áudio em seus aplicativos, você pode automatizar tarefas tediosas, melhorar a acessibilidade e obter insights valiosos a partir de conteúdo de áudio.

Criando o projeto de exemplo

Para demonstrar o uso da transcrição de áudio em texto, vamos criar uma API em ASP.NET Core que irá receber um arquivo de áudio e retornar uma string. Então, crie um projeto Web API e adicione o controller chamado TranscriptionController. Nele, adicione uma action chamada TranscribeAudio, como mostra o código abaixo:

				
					using Microsoft.AspNetCore.Mvc;
using System.Net.Http.Headers;

namespace TranscriptionAPIOpenAI.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class TranscriptionController : ControllerBase
    {
        [HttpPost]
        [Route("transcribe")]
        public async Task<IActionResult> TranscribeAudio(IFormFile audioFile)
        {
            try
            {
                //Nosso código
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }

        }
    }
}

				
			

O primeiro passo será armazenar a nossa chave gerada no site da OpenAI em uma string para que possamos utilizá-la nas nossas requisições. Em projetos reais é indicado guardar a chave em um local seguro. Caso não saiba como gerar uma chave no site da OpenAI, nós temos um tutorial que ensina desde a criação da conta até a geração da chave.

				
					var apiKey = "Sua_Chave";
				
			

Agora criamos uma instância de “HttpClient usando o bloco using, que garante que o HttpClient seja descartado corretamente após o uso. Também configuramos o cabeçalho de autorização para incluir a chave da API da OpenAI no formato “Bearer”.

				
					using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);

				
			

Após isso, vamos criar um objeto MultipartFormDataContent chamado content, que será usado para enviar dados para a API da OpenAI. Este tipo de conteúdo é comumente usado quando precisamos enviar informações como formulários HTML, onde os dados podem incluir arquivos binários, como é o caso do nosso arquivo de áudio.

				
					using var content = new MultipartFormDataContent();
				
			

Agora precisamos abrir um fluxo de leitura (stream) para o arquivo de áudio que queremos enviar. Este arquivo é representado pela variável audioFile, que foi passada para o método TranscribeAudio(). Criamos também um objeto StreamContent chamado streamContent, que contém o fluxo de dados do arquivo de áudio. Estamos definindo o tipo de conteúdo do fluxo como “audio/mpeg”, indicando que se trata de um arquivo de áudio no formato MPEG.

				
					using var fileStream = audioFile.OpenReadStream();
var streamContent = new StreamContent(fileStream);
streamContent.Headers.ContentType = new MediaTypeHeaderValue("audio/mpeg");

				
			

Agora, adicionamos o conteúdo do fluxo de áudio ao formulário multipart usando o método Add(). Passamos o streamContent como o conteúdo a ser adicionado, e também fornecemos um nome “file” para identificar este conteúdo no formulário multipart. Além disso, passamos o nome do arquivo original usando audioFile.FileName.

				
					content.Add(streamContent, "file", audioFile.FileName);
				
			

Finalmente, adicionamos um parâmetro adicional ao formulário multipart. Aqui, estamos adicionando um parâmetro chamado model com o valor “whisper-1”. Este parâmetro é necessário pela API da OpenAI para identificar qual modelo de transcrição de áudio deve ser utilizado.

				
					content.Add(new StringContent("whisper-1"), "model");
				
			

Agora que realizamos o processamento do arquivo de áudio e a configuração da conexão, vamos enviar a solicitação POST para o endpoint da OpenAI usando o método PostAsync do HttpClient e passamos o conteúdo do formulário como argumento. Verificamos se a resposta foi bem-sucedida. Se a resposta não indicar sucesso, retornamos um código de status correspondente ao código de status da resposta e o conteúdo da resposta.

				
					var response = await client.PostAsync("https://api.openai.com/v1/audio/transcriptions", content);

if (!response.IsSuccessStatusCode)
    return StatusCode((int)response.StatusCode, await response.Content.ReadAsStringAsync());

				
			

Caso a resposta seja bem-sucedida, lemos o texto da transcrição da resposta e o retornamos como resposta HTTP OK.

				
					var transcription = await response.Content.ReadAsStringAsync();
return Ok(transcription);

				
			

Na imagem abaixo vemos uma demonstração de teste do endpoint na interface do Swagger. Note que selecionamos um arquivo de áudio e a API retornou a transcrição com sucesso.


Neste exemplo utilizamos um arquivo em formato m4a, mas também há suporte para os formatos mp3, mp4, mpeg, mpga, wav e webm.

Acelere a sua carreira conosco!

Se você é Desenvolvedor .NET Júnior e quer acelerar sua carreira até nível Pleno com salário de R$7k+, ou mesmo busca a primeira vaga, conheça a Mentoria .NET Start: Clique aqui

Se é Desenvolvedor .NET Pleno ou Sênior e quer virar referência técnica em sua equipe e mercado, com salário de R$10k+, conheça a Mentoria .NET Expert: Clique aqui

Conclusão

Neste artigo, exploramos como criar um serviço de transcrição de áudio utilizando a API da OpenAI em uma aplicação .NET. A transcrição de áudio é uma tecnologia poderosa que tem uma ampla gama de aplicações em diferentes setores, como transcrição de palestras, legendagem automática de vídeos, reconhecimento de voz em dispositivos inteligentes e muito mais.

Com este conhecimento, os desenvolvedores podem expandir suas habilidades e criar uma ampla variedade de aplicativos que aproveitam as capacidades de transcrição de áudio para melhorar a experiência do usuário e fornecer soluções mais inteligentes e eficientes.