我有一个.mp3文件。 如何从C中的其余声音中分离出人声?

它是否有可能在C [我知道它有可能一般 – GOM播放器做到了]? 让我开始吧……你怎么说?

你如何确定人声与其他声音的区别?

MP3播放器中的滤波器通常依赖于立体声录音室中的声源(表演者)位于中心的事实。 所以他们只计算通道之间的差异。 如果你给他们一个录音,表演者没有像他们那样失败 – 那么声音就不会被提取出来。

可靠的方法是使用语音检测器。 这是一个非常复杂的问题,涉及硬核数学和针对您的特定任务彻底调整算法。 如果你这样走,你就开始阅读语音编码(声码器)。

这里讨论了这个确切的主题。 它最初是作为音频编码技术的讨论,但在上面的链接页面上有人说

那意味着无法提取语音forms的steoro信号?

但有人指出, 提取语音应该不比消除语音困难。

我会让你进一步阅读,但我怀疑成功的提取可能依赖于语音相对较窄的光谱分布。

注意,原则上不可能完美地分离在一个轨道中混合在一起的不同声音。 就像你将奶油混合到咖啡中一样 – 混合后,不可能将奶油和咖啡完全分开。

可能存在智能信号处理技巧以获得可接受的结果,但通常不可能将声音与音乐完全分离。

从其他声音中分离人声并非易事。 如果您有其他声音的录音,那么您可以参考取消背景声音,这将留下您的人声。

如果背景噪声是某种随机噪声,您将通过使用某种forms的光谱过滤获得胜利。 但它并不简单,需要花一点时间才能获得好成绩。 Adobe Audition有一个自适应光谱滤镜我相信……

假设你的白噪声在整个录制的频段内具有相当均匀的频率分布(在44Khz无压缩录音中,你说的是0到22Khz)。 然后在上面添加一个声音。 显然,语音使用与噪声相同的频率。 人声范围从~300Hz到~3400Hz。 显然,带通音频会将你降低到300到3400Hz的声音范围。 怎么办? 你有一个声音,你现在有了带隔音的白噪声。 不知何故,你需要能够消除噪音并保持声音。 有各种过滤方案,但都会损坏过程中的语音。

祝你好运,它真的不会简单!

查找独立成分分析 (ICA)

其中buf具有pcm wav 44100采样率输入数据

 INT
 voiceremoval(char * buf,int bytes,int bps,int nch)
 {
     short int * samples =(short int *)buf;
     int numsamples = 0;
     int x = 0;
     numsamples = bytes / 2;
     x = numsamples;



     if(bps == 16)
       {
          短* a =样本;
           if(nch == 2)
              而(x--)
                 {
                     int l,r;
                     l = a [1]  -  a [0];
                     r = a [0]  -  a [1];
if (l < -32768) 
                         l = -32768;
  if (l > 32767) 
                         l = 32767;
                    如果(r 32767)
                         r = 32767;
                     a [0] = -l;
                     a [1] = r;
                     a + = 2;
                 }
       }
    返回0;
 }