美文网首页
JAVA 组合音频播报

JAVA 组合音频播报

作者: 一Y一 | 来源:发表于2019-03-29 09:37 被阅读0次

以下示例为标准wav格式音频,其他格式的思路一样

1、思路

  1. 了解wav音频的数据格式
  2. 将多个wav数据组合成一段数据
  3. 直接播报合成后的数据,或者生成临时文件后播报

2、实现

2.1 wav解析

wav详解

这篇文章讲的十分详细,以下摘录几个重点片段还有原文章中一个错误点

2.2 开始拼接

无论拼接什么格式的文件都需要把文件内容和文件头先分开,最后再拼接好的内容里面加上修改后的文件头

2.2.1 将wav的头和体分开

标准wav的文件头为44字节,但是需要修改的位置如下表格,[图片上传失败...(image-d07298-1553822383425)]
我们只需要随便提取一个wav文件的前44字节作为初始头,然后修改描述长度的部分即可。

偏移地址 大小 数据块类型 内容 称作
00H~03H 4 长整数 从下个地址开始到文件尾的总字节数 body_length
28H~2BH 4 长整数 size,数值为4(总字节数) data_length

2.2.2修改头信息

  • 举例计算长度

链接:https://pan.baidu.com/s/1RXRjqck_qH1945dQDyTk1w
提取码:fs2q
使用该文件测试

  //需要完整代码的私信吧
        byte[] buffer = ByteUtil.InputStream2ByteArray("E:/voice/请出示付款码.wav");
        for (int i = 0; i < buffer.length;; i++) {
            System.out.println(i + "=====\t:" + (char) buffer[i] + "\t" + buffer[i]);
        }
//查看 body_length
//body_length部分的数据为[26,58,0,0],此为小端序
//转换过程[0,0,58,26]==>[0x00 0x00 0x3A 0x1A]=>14874
//文件总长度buffer.length=14881=body_length+8

2.3.3 组合文件

  1. 截取文件体
  2. 拼接文件体
  3. 加入文件头
  4. 修改文件头中的长度数据

3、播报

这里就不详细说明了,百度播报的方式有很多

相关文章

  • JAVA 组合音频播报

    以下示例为标准wav格式音频,其他格式的思路一样 1、思路 了解wav音频的数据格式 将多个wav数据组合成一段数...

  • iOS中的音频文件合成

    音频合成: 把多个本地音频文件合成一个音频文件 使用场景: 收款播报类型app、用固定音频文件组合进行语音播报 题...

  • Xamarin Essentials教程语音播报TextToSp

    Xamarin Essentials教程语音播报TextToSpeech 语音播报是一种将文本信息转化为音频信息的...

  • 设计模式 | 组合模式及典型应用

    本文的主要内容: 介绍组合模式 示例 组合模式总结 源码分析组合模式的典型应用java.awt中的组合模式Java...

  • 混合音频

    AVAudioMix用来在组合的音频轨道中进行自定义音频的处理。 AVAudioMix所具有的音频处理方法是由它的...

  • 第十五章 动画机制(二)

    一、组合动画(AnimatorSet 类) 实现 组合动画 的功能:AnimatorSet类 java中 xml中...

  • 面向对象原则

    组合复用原则 多用组合, 少用继承 , 用组合代替继承 ,比如在java 分层设计中, service需要用dao...

  • Java组合模式

    概念 合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与...

  • Java组合模式

    组合模式:适用于把一组相似的对象当作一个单一的对象,组合迷失一句树形结构来组合对象,用来表示部分以及整体层次。这种...

  • 组合模式-java

    概念: 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象...

网友评论

      本文标题:JAVA 组合音频播报

      本文链接:https://www.haomeiwen.com/subject/clskbqtx.html