包含将语音信号分解为其调制分量(即AM-FM分解)所需工具的包。

AMFM_decomp的Python项目详细描述


am fm_decompy
==


version 1.0.8.1


此python包提供了将语音信号的浊音部分分解为其调制分量(即am-fm分解)所需的工具。由于在该方法中,信号被建模为振幅和频率调制分量之和,因此使用了这种
表示法。

这在时频分析中受到了海森堡-加博不等式的限制,本文实现的算法有qhm(准谐波模型)及其改进算法、aqhm(自适应准谐波模型)和eaqhm(扩展自适应准谐波模型)。它们的公式可以在参考文献[2-4]中找到。

对于高质量的电话语音和
电话语音来说都是非常健壮的。

am-fm分解算法的研究是我硕士论文的主题。
最初的yaapt程序是由作者免费提供的,而我自己实现的qhm算法也是。在MATLAB中。我现在将它们移植到python,因为:

*python语言更易于共享、阅读和理解,使其成为一种更好的代码分发方式;
*比matlab(具有不同的数据结构、脚本选项等)更有资源,这对我很有用。在未来的研究中,
*其数值和科学包(numpy
和scipy)的计算性能相当于Matlab;
*Python是免费使用的,而Matlab是专有软件;

evaluations and future expansions关于算法的计算性能,我优化了yaapt代码,所以我的pyhton版本现在运行的速度是原来的matlab版本的两倍。qhm算法的运行速度仍然和matlab中的算法一样快。
这是因为这两个版本的主要瓶颈是矩阵点和
最小二乘运算。由于numpy和matlab已经被优化为使用内部fortran函数执行
这些任务,因此就我所调查的情况来看,没有办法使用cython来加速它们。不过,最近我读到了关于numba的文章,它可以大大提高amfm反编译性能。因此,我可以使用它进行一些测试。

[1]将yaapt与著名的音高跟踪器如yin和rapt进行了比较,并给出了最好的结果。事实上,到目前为止,我一直在使用它,
该算法被证明确实非常健壮。必须强调的是,我只是翻译了这段代码,所以我对它的理论公式只有一般的了解。对于与此相关的深层问题,我建议与原始作者联系。


在我的
python代码中,我实现了一个解决这个问题的方法,但它仍然是一个
次优的解决方案。

实际上,我在硕士论文中专门用了一章来深入研究这个问题,并提出了一个更好的解决方案。不幸的是,由于愚蠢的官僚主义问题,我不知道我的作品是否会被辩护,何时出版(简而言之,截止日期已经过了,因为我和我的导师需要更多的时间来修正和改进论文。然后我们要求一个
项目,但讲师委员会拒绝了。所以,基本上,我被一篇完成的工作论文开除了。不管怎样,我仍在努力解决我现在的工作找到一个解决方案,
我将把自己的贡献添加到这个包中。


重要事项-关于版本1.0.7和更高版本的注意事项
==


已更改:

*`frame_length`参数从25 ms更改为35 ms;
*`nccf_thresh1`参数从0.25更改为0.3;

此外,还添加了一个名为`frame_length t`的新参数(请在末尾额外的"t"处支付
)。为避免混淆,pyaapt.py中使用了另一个(和首选)别名
表示"frame戋lengtht",称为"tda戋frame戋length"。然而,
两个输入("frame_lengtht"和"tda_frame_length")都被接受。

由于这些修改,如果您运行的是amfm_decompy 1.0.6或更早版本的带有默认设置的
,您可能会得到与运行amfm_decompy 1.0.7及更高版本所得结果稍有不同的结果。使用
新的默认参数。

因此,如果确实需要从以前的
版本获得完全相同的结果,则必须向yaapt函数提供旧的参数值。对于
示例,1.0.6或更早版本的代码,如

`pitch=pyaapt.yaapt(signal)`


,应在1.0.7和更高版本中重写为

`pitch=pyaapt.yaapt(signal,**{'frame_length':25.0,'nccf戋thresh1':0.25,"tda_frame_length":25.0}`


安装
==


pypi页面https://pypi.python.org/pypi/amfm_decompy/1.0.8推荐用于快速安装。但您也可以复制这里的所有目录,然后在命令行中运行

``python setup.py install```

。之后,键入

`amfm_test.py`


来运行测试脚本,检查一切是否正常(计算
结果可能需要几分钟)。这个脚本是一个关于如何使用这个包的例子。

因此,如果出现问题,
可能是因为python没有找到文件路径。


如何使用
==


查看文档文件夹中的amfm_decompy pdf文档或http://bjbschmitt.github.io/amfm_decompy上的
联机文档。amfm_decompy
文件夹包含sample.wav文件,用于说明包的代码
示例。


credits and publications
=====



Matlab Yaapt原始程序是由Hongbing Hu和Stephen
a.Zahorian从语音通信中编写的。纽约宾汉顿州立大学实验室。


"一种用于鲁棒
基频跟踪的谱/时间方法,"J.Acosut。SOC。是。2008年6月,第123(6)页。


qhm算法及其升级已在以下出版物中制定和呈现:

[2]y.pantazis,creta大学博士论文,2010。

[3]y.pantazis,o.rosec和y.stylianou,ieee音频交易,语音和语言处理,第19卷,第2期,2011年。

[4]G.P.Kafentzis,Y.Pantazis,O.Rosec和Y.Stylianou,在IEEE国际声学会议上,
语音和信号处理(ICASSP)2012年。

请联系我


bernardo.jb.schmitt@gmail.com。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java PUT请求提供415不支持的媒体类型   JavaMockito:如何在不模拟所有参数的情况下轻松地存根一个方法   java如何将NameValuePair传递给安卓中的另一个活动?   servalet java中的tomcat错误   java Android手机无法连接到eclipse   nullpointerexception在Java中如何将null转换为false?   Java中的http代理身份验证   java如何确保最新版本的JAR与JNLP应用程序一起使用?   简单Java代码上的性能大内存占用   列出AWS EC2实例上运行的服务上的对象时,java 403访问被拒绝   java创建一个类,当创建一个新实例时,它会被添加到一个hasmap中   LookupService中的java getLocation方法返回null   java获取要在ListView中显示的ArrayList字符串编号/位置