Gravação e reprodução de áudios no Delphi de forma simples e rápida

Adicionar recursos de áudio a uma aplicação Delphi pode ser útil em diversos tipos de projetos, como sistemas de atendimento, prontuários, aplicativos educacionais, gravação de observações, assistentes virtuais e soluções que utilizam reconhecimento de voz ou Inteligência Artificial.

Neste artigo, vamos conhecer a DelphiAudio, uma biblioteca leve que permite gravar áudios diretamente no formato MP3 e reproduzir arquivos de áudio em aplicações Delphi de forma simples e rápida. E sem a necessidade de instalar componentes visuais.

Conhecendo a DelphiAudio

A DelphiAudio é uma biblioteca de código Delphi gratuita criada para facilitar a implementação de recursos de gravação e reprodução de áudio.

Com ela, podemos:

  • Gravar áudio diretamente em um arquivo MP3;
  • Gravar o áudio em uma stream;
  • Reproduzir arquivos MP3;
  • Iniciar e interromper uma gravação;
  • Adicionar recursos de áudio sem a necessidade de instalar componentes visuais no Delphi.

A biblioteca possui uma estrutura leve e pode ser utilizada em aplicações VCL para Windows, tanto em projetos Win32 quanto Win64. Para cada plataforma, devem ser utilizadas as DLLs correspondentes disponibilizadas no repositório oficial.

Como utilizar a DelphiAudio

O processo básico de uso consiste em adicionar a unit AudioRecorder.pas ao projeto e copiar as DLLs necessárias para a pasta do executável.

O primeiro passo é acessar o repositório baixar os arquivos e adicionar a unit AudioRecorder.pas ao projeto Delphi.

Essa unit contém as classes e rotinas responsáveis pela captura, codificação e reprodução do áudio.

Adicionando a biblioteca ao projeto

Depois de baixar ou clonar o repositório, adicione o arquivo AudioRecorder.pas ao seu projeto. No Delphi, isso pode ser feito pelo menu: Project > Add to Project

Outra opção é adicionar a pasta da biblioteca ao Library Path ou ao Search Path do projeto.

DLLs necessárias

Além da unit Delphi, a biblioteca utiliza DLLs de suporte para realizar a codificação do áudio no formato MP3.

As DLLs utilizadas são:

lame_enc.dll
libmp3lame.dll

Esses arquivos devem ser copiados para a mesma pasta do executável da aplicação.

É importante utilizar as versões corretas das DLLs de acordo com a plataforma selecionada no Delphi, as DLLs estão disponíveis no repositório:

Gravando diretamente em MP3

Uma das principais vantagens da DelphiAudio é permitir que o áudio capturado pelo microfone seja salvo diretamente no formato MP3.

No projeto, utilizamos a classe TAudioRecorder, disponível na unit AudioRecorder.pas

Primeiro, adicionamos a unit ao uses:

uses
  AudioRecorder;

Depois, declaramos uma variável privada:

private
  FAudioRecorder: TAudioRecorder;

Criamos a instância no evento OnCreate do formulário:

procedure TMainView.FormCreate(Sender: TObject);
begin
  FAudioRecorder := TAudioRecorder.Create;
end;

E liberamos o objeto no OnDestroy:

procedure TMainView.FormDestroy(Sender: TObject);
begin
  FAudioRecorder.Free;
end;

Listando os dispositivos de gravação

Para listar os microfones disponíveis no computador, utilizamos o método GetDevices:

cBoxDevice.Items.Assign(FAudioRecorder.GetDevices);

Os dispositivos encontrados são adicionados a um TComboBox chamado cBoxDevice, permitindo selecionar qual será utilizado na gravação.

Iniciando a gravação

Antes de iniciar uma nova gravação, limpamos os dados anteriores com ClearRecordedData.

Em seguida, chamamos StartRecording, informando o índice do microfone selecionado (caso não seja informado será utilizado o microfone padrão do Windows):

procedure TMainView.btnStartRecordingClick(Sender: TObject);
begin
  FAudioRecorder.ClearRecordedData;
  FAudioRecorder.StartRecording(cBoxDevice.ItemIndex);
end;

Interrompendo a gravação

Para finalizar a gravação, utilizamos o método StopRecording:

procedure TMainView.btnStopRecordingClick(Sender: TObject);
begin
  Sleep(500);
  FAudioRecorder.StopRecording;
end;

Após isso, o áudio permanece disponível para ser reproduzido ou salvo em MP3.

Reproduzindo o áudio gravado

A gravação pode ser reproduzida diretamente da memória, sem a necessidade de salvar um arquivo.

Para isso, obtemos uma TMemoryStream com o método GetMP3Stream:

procedure TMainView.btnPlayRecordingClick(Sender: TObject); 
var 
  LAudioStream: TMemoryStream; 
begin 
  LAudioStream := FAudioRecorder.GetMP3Stream(20500); 
  try 
    LAudioStream.Position := 0; 
    FAudioRecorder.PlayMP3FromStream(LAudioStream); 
  finally 
    LAudioStream.Free; 
  end; 
end;

Esse recurso também permite utilizar o áudio em integrações com APIs, bancos de dados ou serviços de transcrição.

Salvando a gravação em MP3

Para salvar o áudio gravado, utilizamos o método SaveToMP3:

FAudioRecorder.SaveToMP3(ExtractFilePath(Application.ExeName) + 'gravacao.mp3);

Reproduzindo um arquivo MP3

Além de reproduzir a gravação atual, também podemos abrir qualquer arquivo MP3:

procedure TMainView.btnPlayAudioMP3Click(Sender: TObject);
begin
  if not OpenDialog1.Execute then
    Exit;

  FAudioRecorder.PlayMP3FromFile(OpenDialog1.FileName);
end;

O arquivo selecionado no TOpenDialog é enviado ao método PlayMP3FromFile.

Utilizando o áudio em uma stream

A possibilidade de obter o áudio em uma TMemoryStream facilita diversas integrações.

Podemos utilizar essa stream para:

  • Armazenar o áudio em um campo BLOB;
  • Enviar o arquivo para uma API REST;
  • Realizar upload para um servidor;
  • Integrar com serviços de transcrição;
  • Processar o áudio com Inteligência Artificial.

Para obter a stream:

var
  LAudioStream: TMemoryStream;
begin
  LAudioStream := FAudioRecorder.GetMP3Stream(20500);
  try
    LAudioStream.Position := 0;

    // Utilize a stream conforme a necessidade da aplicação.
  finally
    LAudioStream.Free;
  end;
end;

Projeto completo de demonstração

O projeto completo está disponível no GitHub da Code4Delphi: https://github.com/Code4Delphi/DelphiAudio

Nele, você encontrará um exemplo funcional para listar dispositivos, gravar, reproduzir e salvar arquivos MP3.

Vídeo completo no canal da Code4Delphi

Também publicamos um vídeo mostrando todo o processo na prática:

Repositório oficial da biblioteca

A biblioteca DelphiAudio está disponível gratuitamente no GitHub da TMS Software: https://github.com/tmssoftware/DelphiAudio

Conclusão

A DelphiAudio permite adicionar gravação e reprodução de áudio a aplicações Delphi com pouco código.

Com ela, podemos listar dispositivos, gravar diretamente em MP3, reproduzir o áudio da memória, salvar arquivos e trabalhar com streams para integrações com bancos de dados, APIs e Inteligência Artificial.