Menu fechado

Arquitetos de Sistemas

Como converter ou gravar arquivo .wav em 16khz 16bit mono little-endian? ,java ,andróide ,gravação de áudio ,wav ,sample-rate

Visualizando 0 resposta da discussão
  • Autor
    Posts
    • #81340 Responder
      Anderson Paraibano
      Participante

      Resumo:
      Este artigo aborda o processo de conversão ou gravação de um arquivo de áudio no formato .wav com taxa de amostragem de 16 kHz, profundidade de bits de 16 bits, canal mono e ordem de bytes little-endian. O foco principal será em como realizar essa operação usando Java no contexto do desenvolvimento para dispositivos Android.

      Introdução:
      A gravação e a manipulação de arquivos de áudio são tarefas comuns em muitas aplicações Android. No entanto, nem sempre os arquivos de áudio gravados atendem aos requisitos específicos de formato. Neste artigo, exploraremos como converter ou gravar um arquivo .wav com as configurações desejadas, ou seja, taxa de amostragem de 16 kHz, profundidade de bits de 16 bits, canal mono e ordem de bytes little-endian, utilizando a linguagem de programação Java.

      Passo 1: Configurando o ambiente de desenvolvimento
      Antes de começarmos, é importante configurar corretamente o ambiente de desenvolvimento para Android. Certifique-se de ter o Android Studio instalado e configurado em seu sistema.

      Passo 2: Gravação de áudio em formato .wav
      O primeiro passo é configurar a gravação de áudio usando as configurações desejadas. Para isso, você precisará das permissões adequadas no arquivo AndroidManifest.xml. Inclua as seguintes linhas no arquivo AndroidManifest.xml:

      xml
      Copy code
      <uses-permission android:name=”android.permission.RECORD_AUDIO” />
      <uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
      Em seguida, você pode usar a classe MediaRecorder do Android para gravar áudio e salvar o arquivo resultante no formato .wav. Aqui está um exemplo básico de como fazer isso:

      java
      Copy code
      import android.media.AudioFormat;
      import android.media.AudioRecord;
      import android.media.MediaRecorder;
      import java.io.FileOutputStream;
      import java.io.IOException;

      public class AudioRecorder {
      private static final int SAMPLE_RATE = 16000; // Taxa de amostragem
      private static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO; // Canal mono
      private static final int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; // Profundidade de bits de 16 bits
      private static final String FILE_PATH = “/path/to/save/recording.wav”; // Caminho para salvar o arquivo

      private AudioRecord audioRecord;
      private Thread recordingThread;
      private boolean isRecording = false;

      public void startRecording() {
      int bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT);
      audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT, bufferSize);
      audioRecord.startRecording();
      isRecording = true;

      recordingThread = new Thread(new Runnable() {
      @Override
      public void run() {
      writeAudioDataToFile();
      }
      });
      recordingThread.start();
      }

      public void stopRecording() {
      isRecording = false;
      try {
      recordingThread.join();
      audioRecord.stop();
      audioRecord.release();
      } catch (InterruptedException e) {
      e.printStackTrace();
      }
      }

      private void writeAudioDataToFile() {
      byte[] buffer = new byte[bufferSize];
      FileOutputStream os = null;
      try {
      os = new FileOutputStream(FILE_PATH);
      } catch (IOException e) {
      e.printStackTrace();
      }

      while (isRecording) {
      int bytesRead = audioRecord.read(buffer, 0, bufferSize);
      if (bytesRead > 0) {
      try {
      os.write(buffer, 0, bytesRead);
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
      }

      try {
      os.close();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
      }
      Certifique-se de substituir “/path/to/save/recording.wav” pelo caminho real onde você deseja salvar o arquivo de áudio gravado.

      Passo 3: Conversão para o formato desejado
      Se você já possui um arquivo de áudio em formato .wav, mas com diferentes configurações de taxa de amostragem, profundidade de bits, canal ou ordem de bytes, pode usar a biblioteca Java Sound API para realizar a conversão. Aqui está um exemplo de como fazer isso:

      java
      Copy code
      import javax.sound.sampled.*;

      public class AudioConverter {
      private static final AudioFormat OUTPUT_FORMAT = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 16000, 16, 1, 2, 16000, false); // Formato desejado
      private static final String INPUT_FILE = “/path/to/input/file.wav”; // Caminho do arquivo de entrada
      private static final String OUTPUT_FILE = “/path/to/output/file.wav”; // Caminho do arquivo de saída

      public static void main(String[] args) {
      try {
      AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(INPUT_FILE));
      AudioInputStream convertedStream = AudioSystem.getAudioInputStream(OUTPUT_FORMAT, inputStream);
      AudioSystem.write(convertedStream, AudioFileFormat.Type.WAVE, new File(OUTPUT_FILE));
      convertedStream.close();
      inputStream.close();
      } catch (UnsupportedAudioFileException | IOException e) {
      e.printStackTrace();
      }
      }
      }
      Certifique-se de substituir “/path/to/input/file.wav” pelo caminho real do arquivo de áudio de entrada e “/path/to/output/file.wav” pelo caminho onde você deseja salvar o arquivo convertido.

      Conclusão:
      Neste artigo, exploramos como converter ou gravar um arquivo .wav com taxa de amostragem de 16 kHz, profundidade de bits de 16 bits, canal mono e ordem de bytes little-endian. Vimos exemplos de implementação usando a linguagem de programação Java no contexto do desenvolvimento para dispositivos Android. Agora você pode aplicar essas técnicas em seus projetos para atender às necessidades específicas de formato de áudio.

Visualizando 0 resposta da discussão
Responder a: Como converter ou gravar arquivo .wav em 16khz 16bit mono little-endian? ,java ,andróide ,gravação de áudio ,wav ,sample-rate
Sua informação:





<a href="" title="" rel="" target=""> <blockquote cite=""> <code> <pre class=""> <em> <strong> <del datetime="" cite=""> <ins datetime="" cite=""> <ul> <ol start=""> <li> <img src="" border="" alt="" height="" width="">

Nova denúncia

Fechar