包含将语音信号分解为其调制分量(即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。
==
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。