无聊的时候玩玩讯飞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格式相关推荐

  1. python pcm,python pcm音频添加头转成Wav格式文件的方法

    如下所示: ''''' add Head Infomation for pcm file ''' import sys import struct import os __author__ = 'bo ...

  2. 免费音频转换mp3格式,wav格式一次搞定 QT播放音频

    1.之前使用的是QMediaPlayer,播放MP3文件,项目的需求是在特定的流程中播放音频提示,延时不能超过1秒.实际的效果是,执行了下面代码之后,还需要等几秒钟才能听到提示音,这显然和希望的结果不 ...

  3. MP3格式转WAV格式

    MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有10:1~12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸,相 ...

  4. android音频编辑之音频转换PCM与WAV

    前言 本篇开始讲解在Android平台上进行的音频编辑开发,首先需要对音频相关概念有基础的认识.所以本篇要讲解以下内容: 常用音频格式简介 WAV和PCM的区别和联系 WAV文件头信息 采样率简介 声 ...

  5. 原 android音频编辑之音频转换PCM与WAV

    http://blog.csdn.net/hesong1120/article/details/79043482 本文出自: hesong的专栏 前言 本篇开始讲解在Android平台上进行的音频编辑 ...

  6. python 将MP3格式转换为WAV格式(ffmpeg安装,使用pycharm安装包)

    首先,安装pydub,pydub是python的一个音频处理库处理,能对wav格式的音频直接进行处理. 如果要进行其他格式的处理就要安装ffmpeg. 所以这里安装pydub和ffmpeg. 一:安装 ...

  7. java 数据转成xml_java转换CSV文件生成xml格式数据

    注册CSDN快六个月了,之前一直是看园子里的文章,或者碰到问题时,进来查点资料,今天终于决定写一篇自己在园子里的blog. 好吧,鉴于水平太菜,就只记录过程,其中原理啥的并不是很明晰,所以此blog只 ...

  8. java amr 转 mp3_JAVA 音频转换AMR 转MP3,OS,Linux cent os 7

    场景 近期在做微信开发时,需要获取用户发给公众服务号的语音留言.而从微信服务端下载来的语音格式却是amr的格式,同样的你手机录音.Android语音等也都是生成amr格式文件.但当你想在web页面去播 ...

  9. ffmpeg命令转音乐为wav格式,wav格式与PCM数据相互转换,ffplay播放PCM数据

    1.卸载ffmpeg: brew uninstall ffmpeg 2.安装ffmpeg和ffplay brew install ffmpeg --with-ffplay 3.转MP3为wav ffm ...

  10. 小工具批量将mp3音频格式转换为wav格式

    最近收到一个朋友委托的需求,要将MP3的音频格式转换成wav的音频格式.于是,使用python写了这个小工具便于批量进行转换操作. [阅读全文] 首先,下载需要导入的python模块包.这里选用清华大 ...

最新文章

  1. linux虚拟机下安装Tomcat
  2. X射线图像中的目标检测
  3. 3.1.2 单一数字评估指标以及多个不同评估指标
  4. 汇编逻辑运算指令笔记
  5. 【NOIP2013模拟联考5】军训(training)
  6. 15、解决14中csv用excel打开乱码的问题 open('zhihu.csv','w',newline='',encoding='utf-8-sig')...
  7. 构造、拷贝构造、赋值、析构
  8. 两个网段在同一个交换机_告诉你PC不能通过二层交换机实现跨网段通信的小秘密:你很难想到...
  9. 如何高效地远程部署?Fabric 来支招!
  10. 实战之Windows+SQL+Exchange cluster之前期准备(实验文档)
  11. /etc/profile、~/.bash_profile、~/.bashrc和/etc/bashrc
  12. jQuery动态网址标签
  13. 手机steam未能连接到服务器1004,steam与服务器连接失败
  14. matlab在电力系统故障分析中的仿真实例,基于MATLAB仿真的电力系统故障分析.doc...
  15. bootstrap 检验 法 原理_系统发育分析背后的几种算法—距离法
  16. vue+elementUi——实现后台管理系统的布局(sideBar+header+appMain)
  17. 能上QQ但不能打开网页——解决办法
  18. java tic tac toe_java – 对Tic Tac Toe的建议
  19. 夏天最美丽的就应该是荷花了
  20. 苹果系统tft选哪个服务器不卡,tft和ips选哪个 tft和ips区别介绍【图文】

热门文章

  1. iphone163邮件服务器设置,怎样在iphone上设置网易免费企业邮箱收发邮件
  2. Jenkins定时构建和轮询SCM设置说明
  3. 如何使用 身份证归属地查询API
  4. 【python项目开发】爬虫基础知识
  5. ctfmon是什么启动项_Win7启动项找不到ctfmon进程无法正常使用输入法的解决方法...
  6. idea工具(1):依赖包详解
  7. 计算机基础知识经典问答题,计算机基础知识问答题及答案一
  8. greensock下载_GreenSock面向初学者:Web动画教程(第1部分)
  9. 最新java学习资料汇总(学习路线+视频教程+网盘下载)
  10. windows 屏幕保护色设置