import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
File file = new File("OutPcm.pcm");
System.out.println(file.length());
int offset = 0;
int bufferSize = Integer.valueOf(String.valueOf(file.length())) ;
byte[] audioData = new byte[bufferSize];
InputStream in = new FileInputStream(file);
in.read(audioData);
float sampleRate = 16000;
int sampleSizeInBits = 16;
int channels = 1;
boolean signed = true;
boolean bigEndian = false;
// sampleRate - 每秒的样本数
// sampleSizeInBits - 每个样本中的位数
// channels - 声道数(单声道 1 个,立体声 2 个)
// signed - 指示数据是有符号的,还是无符号的
// bigEndian - 指示是否以 big-endian 字节顺序存储单个样本中的数据(false 意味着
// little-endian)。
AudioFormat af = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
SourceDataLine.Info info = new DataLine.Info(SourceDataLine.class, af, bufferSize);
SourceDataLine sdl = (SourceDataLine) AudioSystem.getLine(info);
sdl.open(af);
sdl.start();
while (offset < audioData.length) {
offset += sdl.write(audioData, offset, bufferSize);
}
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
在Java中播放PCM文件涉及到对音频数据的读取、解码以及通过音频系统进行播放的过程。以下是对这个主题的详细阐述: 一、PCM文件结构 PCM文件通常包含未经压缩的原始音频数据,每个采样点代表声音波形在特定时间点的...
java pcm数据文件
2. **解析元数据**:在转换过程中,需要确定PCM文件的采样率、位深度和通道数等信息,以便在创建WAV文件时设置正确的头部信息。 3. **构建WAV头信息**:WAV文件的头部包含了详细的音频元数据。Utils类会包含生成...
Java 语音合成为一项技术,它允许程序将文本转换为可播放的声音,广泛应用于智能助手、有声读物、电话自动服务等领域。在Java中,我们通常会利用TTS(Text To Speech)库来实现这一功能。PCM(Pulse Code Modulation...
通常,它会读取PCM文件,创建MP3编码器实例,设置编码参数(如比特率、采样率等),然后写入数据并生成MP3文件。具体的代码实现可能涉及到对PCM数据的读取、处理和编码API的调用。 5. **WaveHeader.java**: 波形...
这个名为"AudioDemo"的项目就是一个关于如何使用Java来获取音频文件播放时长的示例代码。在这个项目中,开发者可以学习到如何利用Java的内置库来解析音频文件的元数据,包括音频的总播放时间。 首先,我们要关注的...
本文将深入探讨如何使用AudioTrack播放PCM文件,并展示波形,同时结合给定的文件信息,我们可以推测这是一个简单的Android demo项目。 首先,让我们了解什么是PCM(Pulse Code Modulation)。PCM是一种数字音频编码...
2、Java实现播放pcm音频文件(PCMPlay.java) WAV:wav是一种无损的音频文件格式,WAV符合 PIFF(Resource Interchange File Format)规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码...
本实例是关于如何使用Java实现一个简单的PCM音频文件播放器。 在Java中,`AudioTrack`类提供了播放音频的能力。它允许开发者直接向设备的音频硬件发送原始PCM数据。以下是`AudioTrack`使用的关键知识点: 1. **...
在项目PCMAudioPlayerDemo中,我们可以找到一个完整的例子,它演示了如何从PCM文件加载数据并使用AudioTrack进行播放。该示例可能包括了文件读取、AudioTrack实例化、数据写入和播放控制等核心功能。 总结来说,...
纯Java ,从输入流中截去音频的前44个字节。 适用WAV转PCM
- 写入PCM数据:将转换后的PCM数据写入新文件,可能使用`java.io.FileOutputStream`。 使用这个工具类的Demo代码应该展示如何实例化这个工具类,然后调用其方法完成转换操作。例如: ```java WavToPcmUtils ...
java base64的MP3转base64的pcm工具类,适用于微信小程序的语音转文字,因为小程序的录音为MP3,大部分语音读写的第三方只支持wav和pcm,不用生成文件
"语音pcm测试文件专用"这个标题表明,我们关注的焦点是与语音处理相关的PCM(Pulse Code Modulation)测试文件,这些文件通常用于验证和优化音频处理算法或系统的性能。PCM是一种广泛使用的模拟音频信号到数字信号的...
此外,如果你的程序支持多种音频编码格式,如MP3、AAC或OPUS等,那么PCM文件也是一个理想的测试基准,因为它们能揭示任何潜在的编码、解码错误或音质下降问题。通过对比转换前后的PCM文件,可以判断转换过程是否成功...
在处理PCM音频文件时,有时会遇到噪声问题,这可能会影响音质。本篇文章将详细探讨如何在MATLAB环境中使用巴特沃夫滤波器进行低通滤波,以及通过改进的谱减法进行噪声去除。 首先,让我们了解巴特沃夫滤波器。巴特...
java源码 pcm 转wav,方法参数为pcm文件路径,wav文件路径,可以直接使用。
在这个例子中,Java程序将16k_test.pcm这个PCM文件作为输入,发送给百度的语音识别API,然后API会分析音频中的语音内容并返回对应的文本结果。返回的文本是"北京科技馆",这表明音频内容包含了这一句话。 16k_test....
pcm文件转为wav文件,可直接调用使用,只需要填写源文件路劲和目标文件路径,若无法使用,调整数据头即可
使用AudioRecord进行录音 获取录音字节 将自己存储为pcm文件并将pcm文件转为wav文件 加单demo,只有3个按钮 开始录音/停止录音/文件转换 界面很简单 很适合初学者 快速了解AudioRecord录音的实现