在 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 中从声音文件中删除人声的主要内容,如果未能解决你的问题,请参考以下文章