V . TarsosDSP 示例应用
1 . 声音检测 ( SoundDetector ) : 计算 音频采样 的响度 , 当输入的音频样本声音响度超过一个阈值时 , 会触发指定的事件 ;
2 . 音高检测 ( PitchDetector ) : 实时的音频样本 音高 / 频率 监测 , 监测结果是 频率值 ( 单位 Hz 赫兹 ) 和 该频率对应的 概率 ;
3 . 敲击检测 ( PercussionDetector ) : 敲击检测 , 监测打击乐器的第一下瞬间 ;
① 示例 : 如 , 拍手动作 触发 某事件 ;
② 涉及参数 : 该示例中涉及到 声音样本的 频率 和 频率对应的概率 , 这两个参数对检测算法的影响 ;
4 . UtterAsterisk : 这是一个游戏 ;
① 游戏目标 : 辅助唱歌 , 然后尽可能的接近某个旋律 ;
② 实现原理 : 使用 YIN / MPM 算法 , 实现 实时的 频率 / 音高 检测 , 检测器 频率值 ;
5 . Java 频谱图 ( Spectrogram in Java ) :
① 显示内容 : 显示 音频文件 , 或 音频流 的频谱图 和 检测到的 频率信息 ;
② 基本频率 : 音频样本的频率有很多 , 根据某种特征要求 , 选择其中一个作为其基本频率 ;
③ 运行 : 示例中的 jar 程序无法运行 , 需要安装 JDK 1.7 和 Ant 构建脚本 , 自己编译一次 , 就可以运行了 ;
6 . Goertzel DTMF 解码器 : 使用 Goertzel 算法实现 ; 提供了一个 UI 界面展示其解码过程 ;
7 . 音频时间延长 ( Audio Time Stretching ) : 使用纯 Java 代码实现 WSOLA 算法 , 这是一种变速不变调的音频处理算法 ; 使用 WSOLA 算法可以在不改变声音 频率 / 音高 的前提下 , 修改音频的播放速度 , 即播放器常用的倍速播放功能 ; 好多比较水的音频播放器倍速播放的时候 , 声音音调都变了 , 如 …
8 . 音频特征提取 ( Audio Feature Extraction ) : 这是一个简单的命令行程序 , 可以用于提取音频特征 ;
9 . 音频合成器 ( Audio Feature Extraction ) : 也是一个命令行程序 , 可以用于音频合成 ;
10 . 变调 ( Pitch Shifting ) : 用于改变音频样本的 音高 / 频率 ; 既可改变从麦克风实时输入的音频流的频率 , 也可以改变一个音频文件的 声音频率 ; 该应用同时提供了命令行功能 ;
VI . TarsosDSP 源码路径解析
1 . TarsosDSP GitHub 源码地址 ( 重点 ) : GitHub - JorenSix / TarsosDSP
2 . 源码根目录 : 从上面 GitHub 上下载源码 , 先看根目录如下 :
3 . 源码目录 src : src 目录是 TarsosDSP 的源码目录 ;
src/core : 主要的核心功能源码 ;
src/test : DSP 功能的单元测试代码 , 在这个目录 ;
src/examples : TarsosDSP 的示例代码 , 提供了 Java 的 Swing 界面 ;
src/android : 涉及到 Android 的音频 IO , 需要依赖 Android 的环境 ;
src/jvm : 涉及到 JRE 的音频 IO , 需要依赖 Java 环境 ;