实现这个功能,需要的jar包有:audio.jar、media-player.jar、sound.jar。

package com.audio.main;import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Vector;import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;import sun.audio.AudioStreamSequence;public class MergeAudio {/*** wav语音文件合成* * @param descFile*            目标文件* @param srcFile*            源文件列表* @throws IOException* @throws UnsupportedAudioFileException*/public static void merge(String descFile, String... srcFile) throws IOException, UnsupportedAudioFileException {// 读取第一个源文件File firstFile = new File(srcFile[0]);AudioFileFormat firstFileFormat = AudioSystem.getAudioFileFormat(firstFile);AudioFormat firstFormat = AudioSystem.getAudioFileFormat(firstFile).getFormat();// 初始化数据帧长度int frameLength = 0;// 初始化容器Vector<AudioInputStream> vec = new Vector<AudioInputStream>();if (srcFile.length > 1) {for (int i = 0; i < srcFile.length; i++) {// 读取下一个文件FileInputStream nextFile = new FileInputStream(srcFile[i]);// java.io.IOException: mark/reset not supported// 解决方案:给定的流不支持mark和reset就会报这个错误,解决方案是用BufferedInputStream把原来的流包一层.AudioInputStream next_ais = AudioSystem.getAudioInputStream(new BufferedInputStream(nextFile));// 计算目前的文件长度,同时将当前文件加入到容器中frameLength += next_ais.getFrameLength();vec.add(next_ais);}// 整合多个流AudioStreamSequence sis = new AudioStreamSequence(vec.elements());// 写入文件中AudioInputStream out = new AudioInputStream(sis, firstFormat, frameLength);AudioSystem.write(out, firstFileFormat.getType(), new File(descFile));// 关闭文件if (sis != null)sis.close();for (AudioInputStream stream : vec) {stream.close();}}}
}

代码下载链接:https://download.csdn.net/upload/11233233

【java】多个音频文件拼接实例之普通话转粤语发音相关推荐

  1. java io流复制文件简单实例

    java io流复制文件简单实例 实例1: package com.io;import java.io.BufferedInputStream; import java.io.BufferedOutp ...

  2. 用java对wav音频进行拼接

    wav音频简介 一段wav音频由两部分组成,分别为wav头文件和pcm数据 wav头文件 wav头文件其实不止一种格式,本文主要针对44字节的头文件,其格式如图1(图源)所示: 图1 wav头文件格式 ...

  3. Java 获取opus 音频文件时长

    当时为了获取时长花费好长时间,所以现在写出这文章以免后面有遇到该问题不止如何解决花费太长时间.话不多说,上代码 需要的依赖包有 <!-- https://mvnrepository.com/ar ...

  4. java切割wav音频文件

    import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.MultimediaInfo; import java.io. ...

  5. java audioinputstream 读取音频文件_从原始文件中获取最多x个字节的AudioInputStream(剪切音频文件)...

    小编典典 下面的代码向您展示如何复制音频流的一部分,从一个文件读取并写入另一个文件. import java.io.*; import javax.sound.sampled.*; class Aud ...

  6. java 将.amr音频文件转换为.mp3或.wav文件

    1.在windows系统下 //利用ffmpeg.exe工具与cmd中的命令进行转换 //sourcePath为需要转换的.amr文件路径;targetPath为转换好的.mp3文件路径: //too ...

  7. java wav音频文件播放器demo

    java 简易wav音频文件播放器 测试文件 源码 相关资料 测试文件 csdn下载 : https://download.csdn.net/download/qq_41054313/18704149 ...

  8. android 播放声音文件,AudioPlayerDemo android 播放音频文件

    [实例简介] 该PCM 参数如下: rm-channels_2 frame_4096(纯PCM数据每帧长度4096) freq_44100 bits_16 480X234_1700kbps.rm是源音 ...

  9. java实现音频播放小程序_微信小程序实现音频文件播放进度的实例代码

    问题描述 在微信小程序中经常会用到控制文件播放的滑块,通过滑块可控制音频播放进度,下面即用代码实现. 解决方案 首先用.wxml与 .wmss 代码实现进度条的效果,再通过 .js 文件控制进度条的进 ...

最新文章

  1. QT串口2--控制GSM模块的使用
  2. thinkphp phpexcel导出
  3. linux之netstat使用--10个常用的命令
  4. 新拟物素材|时髦iOS 主屏幕图标
  5. [Ext JS 4] 实战之 Picker 和 Picker Field
  6. 关于单点登录的实现方法
  7. Delphi 7 ADO使用
  8. 读书笔记:调试软件 张银奎
  9. 小试牛刀1:制作一个简单的导航栏页面
  10. 都在说CI/CD,到底什么是CI/CD
  11. APS高级计划与排程系统基本概念和功能说明
  12. 如何修改python中字典的键和值
  13. win10 常用命令
  14. mysql数据库表格数据类型_MYSQL数据库数据表字段类型含义解释
  15. 论文开题报告的研究基础怎么写?
  16. Arduino模块学习笔记(一)—GPS模块的使用
  17. BFS广度优先搜索算法//宽度优先搜索算法
  18. SSE图像算法优化系列二十五:二值图像的Euclidean distance map(EDM)特征图计算及其优化。...
  19. NVIDIA显示设置不可以用,桌面右击选项卡没有显卡设置选项
  20. 如何恢复win10被管理禁用的注册表编辑

热门文章

  1. Linux环境下PGI编译器pgf90的安装
  2. “买不来”的数字化转型,每家的“乐高”都不同
  3. 原创|如何自学计算机科学?
  4. 北京和深圳计算机去哪发展,北京和深圳,你选择哪里?
  5. RTThread入门
  6. 【MQ我可以讲一个小时】
  7. Android之仿IOS悬浮窗
  8. WinCC(portal)和WinCC之间的区别、各版本区别以及兼容性情况整理
  9. Oracle 动态监听和静态监听非1521端口配置
  10. 5G的应用场景你知道几个?