java pcm to wav_Java音频转换:PCM格式转WAV格式
无聊的时候玩玩讯飞tts,文字转语音,可是转出的语音是PCM格式的,无奈只好找转格式的代码。网上千篇一律,互相抄啊,终于找到可用的,但是语音却失真了(鼻音太重,小丸子的声音比蜡笔小新还重。。),只好自己研究。。
后来经过一番思考,java本身是有播放语音文件的能力,网上搜刮了一篇java播放pcm的代码:
public class PcmPlayer {
public static void playPcm(File file) {
try {
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();
}
}
}
可以直接播放PCM,然后突发奇想:既然能播放就能保存。想到就做:
public class Pcm2Wav {
public static void main(String[] args) throws Exception {
parse("d:/1.pcm", "d:/11.wav");
}
public static void parse(String source, String target) throws Exception {
float sampleRate = 16000;
int sampleSizeInBits = 16;
int channels = 1;
boolean signed = true;
boolean bigEndian = false;
AudioFormat af = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
File sourceFile = new File(source);
FileOutputStream out = new FileOutputStream(new File(target));
AudioInputStream audioInputStream = new AudioInputStream(new FileInputStream(sourceFile), af, sourceFile.length());
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, out);
audioInputStream.close();
out.flush();
out.close();
}
}
结果真的可以直接转换了,而且效果和pcm一样好。
java pcm to wav_Java音频转换:PCM格式转WAV格式相关推荐
- python pcm,python pcm音频添加头转成Wav格式文件的方法
如下所示: ''''' add Head Infomation for pcm file ''' import sys import struct import os __author__ = 'bo ...
- 免费音频转换mp3格式,wav格式一次搞定 QT播放音频
1.之前使用的是QMediaPlayer,播放MP3文件,项目的需求是在特定的流程中播放音频提示,延时不能超过1秒.实际的效果是,执行了下面代码之后,还需要等几秒钟才能听到提示音,这显然和希望的结果不 ...
- MP3格式转WAV格式
MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有10:1~12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸,相 ...
- android音频编辑之音频转换PCM与WAV
前言 本篇开始讲解在Android平台上进行的音频编辑开发,首先需要对音频相关概念有基础的认识.所以本篇要讲解以下内容: 常用音频格式简介 WAV和PCM的区别和联系 WAV文件头信息 采样率简介 声 ...
- 原 android音频编辑之音频转换PCM与WAV
http://blog.csdn.net/hesong1120/article/details/79043482 本文出自: hesong的专栏 前言 本篇开始讲解在Android平台上进行的音频编辑 ...
- python 将MP3格式转换为WAV格式(ffmpeg安装,使用pycharm安装包)
首先,安装pydub,pydub是python的一个音频处理库处理,能对wav格式的音频直接进行处理. 如果要进行其他格式的处理就要安装ffmpeg. 所以这里安装pydub和ffmpeg. 一:安装 ...
- java 数据转成xml_java转换CSV文件生成xml格式数据
注册CSDN快六个月了,之前一直是看园子里的文章,或者碰到问题时,进来查点资料,今天终于决定写一篇自己在园子里的blog. 好吧,鉴于水平太菜,就只记录过程,其中原理啥的并不是很明晰,所以此blog只 ...
- java amr 转 mp3_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7
场景 近期在做微信开发时,需要获取用户发给公众服务号的语音留言.而从微信服务端下载来的语音格式却是amr的格式,同样的你手机录音.Android语音等也都是生成amr格式文件.但当你想在web页面去播 ...
- ffmpeg命令转音乐为wav格式,wav格式与PCM数据相互转换,ffplay播放PCM数据
1.卸载ffmpeg: brew uninstall ffmpeg 2.安装ffmpeg和ffplay brew install ffmpeg --with-ffplay 3.转MP3为wav ffm ...
- 小工具批量将mp3音频格式转换为wav格式
最近收到一个朋友委托的需求,要将MP3的音频格式转换成wav的音频格式.于是,使用python写了这个小工具便于批量进行转换操作. [阅读全文] 首先,下载需要导入的python模块包.这里选用清华大 ...
最新文章
- linux虚拟机下安装Tomcat
- X射线图像中的目标检测
- 3.1.2 单一数字评估指标以及多个不同评估指标
- 汇编逻辑运算指令笔记
- 【NOIP2013模拟联考5】军训(training)
- 15、解决14中csv用excel打开乱码的问题 open('zhihu.csv','w',newline='',encoding='utf-8-sig')...
- 构造、拷贝构造、赋值、析构
- 两个网段在同一个交换机_告诉你PC不能通过二层交换机实现跨网段通信的小秘密:你很难想到...
- 如何高效地远程部署?Fabric 来支招!
- 实战之Windows+SQL+Exchange cluster之前期准备(实验文档)
- /etc/profile、~/.bash_profile、~/.bashrc和/etc/bashrc
- jQuery动态网址标签
- 手机steam未能连接到服务器1004,steam与服务器连接失败
- matlab在电力系统故障分析中的仿真实例,基于MATLAB仿真的电力系统故障分析.doc...
- bootstrap 检验 法 原理_系统发育分析背后的几种算法—距离法
- vue+elementUi——实现后台管理系统的布局(sideBar+header+appMain)
- 能上QQ但不能打开网页——解决办法
- java tic tac toe_java – 对Tic Tac Toe的建议
- 夏天最美丽的就应该是荷花了
- 苹果系统tft选哪个服务器不卡,tft和ips选哪个 tft和ips区别介绍【图文】
热门文章
- iphone163邮件服务器设置,怎样在iphone上设置网易免费企业邮箱收发邮件
- Jenkins定时构建和轮询SCM设置说明
- 如何使用 身份证归属地查询API
- 【python项目开发】爬虫基础知识
- ctfmon是什么启动项_Win7启动项找不到ctfmon进程无法正常使用输入法的解决方法...
- idea工具(1):依赖包详解
- 计算机基础知识经典问答题,计算机基础知识问答题及答案一
- greensock下载_GreenSock面向初学者:Web动画教程(第1部分)
- 最新java学习资料汇总(学习路线+视频教程+网盘下载)
- windows 屏幕保护色设置