zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【TarsosDSP】TarsosDSP 简介 ( TarsosDSP 功能 | 相关链接 | 源码和相关资源收集 | TarsosDSP 示例应用 | TarsosDSP 源码路径解析 )

链接资源应用源码 解析 功能 示例 简介
2023-06-13 09:17:42 时间

文章目录

I . TarsosDSP 函数库简介


1 . TarsosDSP 是 Java 库 : TarsosDSP 是一个音频处理 Java 库 , 该库是纯 Java 实现 , 没有依赖任何外部的第三方库 ;

2 . TarsosDSP 库的目的 : 提供简单易用的接口 , 调用音频处理算法实现相关业务逻辑 ;

3 . TarsosDSP 库的定位 : 数字信号处理 ( DSP ) 算法都很复杂 , 涉及傅里叶变换 , 数字滤波器等算法 , 复变函数等数学理论 , 想想就很复杂 ;

① 小巧简单 : TarsosDSP 库在旨在减小函数库库的体量 , 可以简单地调用 ;

② 功能丰富 : TarsosDSP 库目的是为了提供强大齐全的功能 , 可以胜任任何实际应用中的业务逻辑 ;

③ 平衡点 : 明显上面两个功能是相悖的 , 功能越强大 , 函数调用越复杂 , 函数库体量越大 , TarsosDSP 目的是找到二者的一个平衡点 , 既能保证简介 , 有尽量提供丰富的 DSP 处理功能 ;

II . TarsosDSP 功能


1 . 声音起始检测 : A percussion onset detector , 检测声音的第一下的发音瞬间 ;

2 . 音高检测算法 : 给一个音频样本 , 检测该样本的声音频率 , 音高 , 可以用于乐器调音器实现 , 声音识别领域 ; TarsosDSP 中提供了多个该该类型算法 , 如 : YIN , Mcleod Pitch method 等 ;

3 . 动态音高检测算法 : Dynamic Wavelet Algorithm Pitch Tracking , 动态的频率 , 音高检测算法 , 分析动态输入的音频流中的音高频率 ; ( 个人理解 )

4 . 解码算法 : 实现了 Goertzel DTMF 解码算法 , 用于将 MP3 等压缩格式的音频 , 解码成 PCM , WAV 格式的音频 ;

5 . 时间拉伸算法 : WSOLA 算法 , 拉伸音频的时间 , 变速不变调算法 , 等音频处理 , 如音频中的倍速播放功能 ;

6 . 重采样算法 : 改变音频的采样率 , 声道数 , 采样大小等音频属性 , 将 44100 Hz , 立体声 , 32 位采样的音频 , 转为 8000Hz , 单声道 , 8 位采样 , 瞬间将音频大小缩小了 40 倍 , 当然音质也变垃圾了 ;

7 . 过滤器 : 过滤杂音 , 噪音 等 ;

8 . 简单的合成器 : 合成多个声音到同一个声道 ;

9 . 音频效果器 : 为音频添加诸如 , 混响 , 重低音 , 环绕音 , 均衡器 等音频效果器 ;

10 . 音高转换算法 : 变声器算法 , 将声音变为萝莉音 , 大叔音 , 男声变女声 等操作 ;

这是一个很好的 DSP 算法学习平台 , 如果将 TarsosDSP 的代码及内部的原理都理解了 , 算是一个入门级的音频算法工程师了 ;

III . TarsosDSP 相关资源链接 ( 官方资料 )


1 . TarsosDSP GitHub 源码地址 ( 重点 ) : GitHub - JorenSix / TarsosDSP

① TarsosDSP 各个版本资源地址 ( 文档 / 代码示例 / 各平台函数库 ) : Index of /releases/TarsosDSP/

② TarsosDSP 最新版本资源地址 ( 文档 / 代码示例 / 各平台函数库 ) : Index of /releases/TarsosDSP/TarsosDSP-latest/

2 . TarsosDSP 详细资源地址 :

① TarsosDSP 文档地址 : TarsosDSP latest Documentation

② TarsosDSP 示例地址 : TarsosDSP latest Examples

③ TarsosDSP Java 函数库下载地址 : TarsosDSP-Android-latest.jar

④ TarsosDSP Android 函数库下载地址 : TarsosDSP-latest.jar

3 . Rubber Band :

① 项目主页 : Make your audio applications stretchier than ever

② Android 平台使用 Rubber Band 实时音频时间拉伸库 : GitHub - JorenSix / RubberBandJNI ;

4 . TarsosDSP 相关文章目录 : TarsosDSP ;

① Android 平台使用 TarsosDSP : TarsosDSP on Android - Audio Processing in Java on Android ;

② Android 平台 mp3 音频解码 : Decode MP3s and other Audio formats the easy way on Android

③ Java 通过 JNI 控制音频时间拉伸和变调 : Control Audio Time Stretching and Pitch Shifting from Java using Rubber Band And JNI

IV . TarsosDSP 源码和相关资源收集 ( 官方资料 )


整理了一上午 , 将目前能找到的官方资料都收集了一遍 ;

1 . 下载地址 : TarsosDSP 资料

2 . TarsosDSP 手册 : 强烈推荐 TarsosDSP-2.3-Manual.pdf 手册 , 绝对是入门的第一手好资料 , 整个手册看完 , 基本能学会 TarsosDSP ;

3 . 整体目录 :

4 . TarsosDSP 函数库 :

① 函数库平台 : 分别提供 Java 和 Android 的函数库 JAR 包 ;

② 附带源码 : 分别提供 带完整源码 和 不带源码的 JAR 包 , 学习开发阶段建议使用 带源码版本的 JAR 包 , 上线时使用不带源码的 JAR 包 , 节省体积 ;

③ 函数库 JDK 版本 : TarsosDSP 源码兼容 JDK 1.6 版本 , JAR 文件都编译为 JDK 1.7 版本 ;

5 . TarsosDSP 示例应用 : 提供

23

个示例应用 ;

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 环境 ;