x(t)
是来自一个通道/麦克风的原始语音。
X = repmat(sum(x.*x,1),size(x,1),1).*x)*x'
是x(t)
功率谱的估计。尽管X' = X
,但行和列之间的间隔根本不相同。每行代表信号的时间,而每列代表频率。我想这是对称为光谱图的更严格表达的估计和简化。
频谱图上的奇异值分解用于基于频谱信息将信号分解为不同的分量。 s
中的对角线值是不同频谱分量的大小。 u
的行和v'
中的列是正交向量,这些正交向量将具有相应幅度的频率分量映射到X
空间。
我没有要测试的语音数据,但是据我了解,借助SVD,希望将落入相似正交向量中的分量在无监督学习的帮助下进行聚类。假设,如果将s的前两个对角线幅度进行聚类,则u*s_new*v'
将形成一个人声,其中s_new
与s
相同,除了(3:end,3:end)
所有元素被淘汰。
0
在斯坦福大学的Andrew Ng在Coursera的机器学习入门演讲的幻灯片中,他给出了鸡尾酒会问题的以下单行八度音阶解决方案,因为音频源是由两个空间分开的麦克风录制的:
幻灯片的底部是“来源:Sam Roweis,Yair Weiss,Eero Simoncelli”,而幻灯片的底部是“音频剪辑由Te-Won Lee提供”。吴教授在影片中说:
在视频讲座中单独播放的音频结果并不完美,但在我看来却是惊人的。有人对那一行代码的性能有何见解?尤其是,没有人知道参考文献来解释Te-Won Lee,Sam Roweis,Yair Weiss和Eero Simoncelli在那一行代码方面的工作吗?
更新
为了证明算法对麦克风分离距离的敏感性,下面的模拟(以八度为单位)将音调与两个空间分离的音调发生器分开。
在我的便携式计算机上执行大约10分钟后,该模拟生成以下三个图形,说明两个隔离的音调具有正确的频率。
但是,将麦克风的分离距离设置为零(即dMic = 0)会使模拟生成以下三个图形,这些图形说明模拟无法隔离第二个音调(由svd矩阵中返回的单个有效对角线项确认)。
我希望智能手机上的麦克风间距足够大,以产生良好的效果,但是将麦克风间距设置为5.25英寸(即dMic = 0.1333米)会导致模拟产生以下结果,但不令人鼓舞,这些数据说明第一隔离音中的频率分量。