在 Matlab 中从声音文件中删除人声

Posted

技术标签:

【中文标题】在 Matlab 中从声音文件中删除人声【英文标题】:Removing Vocals from sound file in Matlab 【发布时间】:2013-01-18 06:40:57 【问题描述】:

我正在使用 Matlab 分离声音文件的左右声道。代码可以编译,但并没有从声音文件中完全删除人声。这是为什么呢?

代码如下:

 [y,fs]=wavread('On the floor.wav');

 left=y(:,1);
 right=y(:,2);


 wavplay(left-right,fs);

【问题讨论】:

你在右边听到什么,你在左边听到什么? 人声被抑制了一点,但并没有完全消失。我怎样才能做到这一点?我在这段代码中遗漏了什么 在matlab中播放文件时如何停止声音播放。我在工作区中尝试过clear playsnd,但它不起作用 我很惊讶你甚至在这方面取得了一些成功。如果它真的那么简单,试试left-2.0*right 或找到一个最小化abs(left-f*right)f 然后计算left-f*right。您还可以像 y=y(1:ceil(size(y,1)/10),:) 一样截断 y 以仅处理歌曲的前 10 个。 好的,你能告诉我如何在播放 matlab 时停止音乐 【参考方案1】:

声音抑制是一个困难问题,是大量学术和商业研究的主题。在学术界,这种问题被称为源分离,近年来一直是博士研究的热门课题;因此存在大量文献。

您似乎正在实施的方法是在立体图像的中心减去节目素材。如果正确实施(参见上面的评论),这可能会很好地抑制某些轨道上的一些人声,但也会将大量其他材料混合到您希望保留的中心。

【讨论】:

以上是关于在 Matlab 中从声音文件中删除人声的主要内容,如果未能解决你的问题,请参考以下文章

从音频文件中删除人声的算法

从 MATLAB 中字符串的开头和结尾删除 '''

在 JavaScript 中从数组中删除一个项目

如何在matlab中从一组图像中制作gif图像?

在 Powershell 中从非常大的 XML 文件中删除节点

【小项目-1】用Python进行人声伴奏分离和音乐特征提取