Como converter ou gravar arquivo .wav em 16khz 16bit mono little-endian? ,java ,andróide ,gravação de áudio ,wav ,sample-rate
- Este tópico contém 0 resposta, 1 voz e foi atualizado pela última vez 1 ano, 5 meses atrás por Anderson Paraibano.
-
AutorPosts
-
-
Anderson ParaibanoParticipante
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 arquivoprivate 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ídapublic 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.
-
-
AutorPosts