Tag: wav

在Android中从麦克风录制wav文件 – 问题

我需要能够在Android中使用麦克风创建WAV文件。 目前,我遇到了很多麻烦。 到目前为止,这是我的情况。 我正在使用micDroid项目代码的一部分进行记录: //read thread int sampleRate = 44100; int bufferSize = AudioRecord.getMinBufferSize(sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT); AudioRecord ar = new AudioRecord(AudioSource.MIC,sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT,bufferSize); short[] buffer = new short[bufferSize]; ar.startRecording(); while(isRunning){ try{ int numSamples = ar.read(buffer, 0, buffer.length); queue.put(new Sample(buffer, numSamples)); } catch (InterruptedException e){ e.printStackTrace(); } } //write thread int sampleRate = 44100; WaveWriter writer = new WaveWriter(“/sdcard”,”recOut.wav”,sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT); try […]

UnsupportedAudioFileException的解决方法?

我正处于用Java编写小型音乐/节奏游戏的早期阶段(通过Slick框架,它依次使用OpenAL,但这可能与此无关)。 游戏需要以WAV格式读取(和播放)几个声音文件,但有些文件会抛出[javax.sound.sampled.UnsupportedAudioFileException]exception。 at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1102) at org.newdawn.slick.openal.WaveData.create(WaveData.java:123) at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:713) at org.newdawn.slick.openal.SoundStore.getWAV(SoundStore.java:683) at org.newdawn.slick.Sound.(Sound.java:33) 这些文件可以在Winamp或Foobar2000中播放得很好,所以这意味着Java只是不识别文件格式的某些变体。 此时我有什么选择? 注意:有问题的文件是用户提供的,所以我不能事先转换它们(使用像audacity这样的东西)。 任何转换步骤都必须在运行时完成。

使用JAVA从wav文件中提取振幅数组

我试图从音频文件(WAV文件)中提取振幅数组。 我将使用此振幅数组来绘制给定wav文件的幅度与时间关系图。 我能够自己绘制图形,但不知道如何从java中的给定音频(wav)文件中提取幅度?

用Java一个接一个地播放WAV文件

我正试图互相播放几个WAV文件。 我试过这个方法: for (String file : audioFiles) { new AePlayWave(file).start(); } 但是,它同时起到了所有作用。 所以我需要一个看起来像这样的函数: public void play(Vector audioFiles); 向量包含文件,例如: “test1.wav” , “test2.wav” 我一直在寻找超过四个小时,但我似乎无法找到一个有效的解决方案:( 我还尝试将WAV文件连接到一个AudioInputStream。 它没有给出任何编译器错误,但声音完全搞砸了。 码: public static AudioInputStream concat(Vector files) throws UnsupportedAudioFileException, IOException { AudioInputStream total = AudioSystem.getAudioInputStream(new File(files.get(0))); for (int i = 1; i < files.size(); i++) { AudioInputStream clip = AudioSystem.getAudioInputStream(new File(files.get(i))); total […]

Java:混合两个WAV文件而不会引入噪音

我正在尝试将2个WAV文件混合到一个WAV文件中。 文件将始终具有完全相同的持续时间并具有相同的格式(16位,44.1 kHz,带符号,小端,单声道)。 使用AudioSystem.getAudioInputSream使用ByteArrayOutputStream将两个WAV放入字节数组,以确保我只获取PCM数据而没有标头。 在其他一些线程的帮助下,我已经能够成功地组合arrays,但不会在信号中引入大量噪声。 它肯定听起来不像剪辑或失真,但我已经尝试平均每对字节的总和以确保安全,这使得一切都更安静,噪音和所有。 任何见解将不胜感激! 我尝试了两种方法,它们应该做同样的事情,并且似乎产生相同的声音结果。 第一个更简单的方法: private byte[] mixBuffers(byte[] bufferA, byte[] bufferB) { byte[] array = new byte[bufferA.length]; for (int i=0; i<bufferA.length; i++) { array[i] = (byte) ((bufferA[i] + bufferB[i])); } return array; } 第二个更具体的方法: private byte[] mixBuffers(byte[] bufferA, byte[] bufferB) { byte[] array = new byte[bufferA.length]; for (int i=0; i<bufferA.length; i+=2) […]

如何从wav文件中删除噪音?

我实际上是使用简单的等式(a + b)/ 2混合两个wav文件,其中a和b是来自两个wav文件的样本。这很好,我能够同时收听两个文件中的音频。 但问题是在背景中播放了很多hssss噪音(类似于收音机),我怎样才能摆脱这种白噪声/噪音。

mp3到java中的wav转换

我将mp3转换为wav的代码是: package audio1; import java.io.File; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; public class NewClass { public static void main(String [] args){ try{ AudioFileFormat inputFileFormat = AudioSystem.getAudioFileFormat(new File(“c:\\1.mp3”)); AudioInputStream ais = AudioSystem.getAudioInputStream(new File(“c:\\1.mp3”)); AudioFormat audioFormat = ais.getFormat(); System.out.println(“File Format Type: “+inputFileFormat.getType()); System.out.println(“File Format String: “+inputFileFormat.toString()); System.out.println(“File lenght: “+inputFileFormat.getByteLength()); System.out.println(“Frame length: “+inputFileFormat.getFrameLength()); System.out.println(“Channels: “+audioFormat.getChannels()); System.out.println(“Encoding: […]

有没有任何纯java方式将.wav转换为.mp3?

我在Java方面遇到了很多困难,但无法将Java .wav的工作示例与.mp3转换器结合起来。 此转换器将在Java applet中使用,因此它应仅依赖于使用纯Java编写的库,而不依赖于底层C代码调用。 有人能提供一个完整的例子吗? 谢谢

使用Java中的傅立叶变换处理音频数据

我正在尝试处理音频数据。 我正在使用Java。 我已将音频数据提取到数组中。 现在我应该将N个数据样本传递给计算离散傅立叶变换(或快速傅里叶变换,这样更有效)的函数。 我读过文档,但是我越来越困惑了。 我想要计算的是幅度谱(| X(k)|)。 谁能帮我? 谢谢

从计算机文件中播放java中的.wav文件

package soundTest; import java.applet.*; import java.net.*; import javax.swing.*; import javax.sound.sampled.*; import java.io.*; import java.util.*; public class SoundTest { public static void main(String[] args) throws Exception { try { AudioClip clip1 = Applet.newAudioClip(new URL(new File(“E0.wav”).getAbsolutePath())); clip1.play(); } catch (MalformedURLException murle) { System.out.println(murle); } URL url = new URL( “http://www.mediafire.com/listen/tok9j9s1hnogj1y/downloads/E0.wav”); Clip clip = AudioSystem.getClip(); AudioInputStream ais = […]