当前位置: 首页 > 知识库问答 >
问题:

从音频文件输入检测人声

阎单鹗
2023-03-14

我正在尝试实现自动录音功能,类似于Talking Tom应用程序。我使用以下代码读取音频记录器的输入并分析缓冲区:

 float totalAbsValue = 0.0f;
 short sample = 0;

 numberOfReadBytes = audioRecorder.read( audioBuffer, 0, bufferSizeInBytes);

 // Analyze Sound.
 for( int i=0; i<bufferSizeInBytes; i+=2 )
 {
     sample = (short)( (audioBuffer[i]) | audioBuffer[i + 1] << 8 );
     totalAbsValue += Math.abs( sample ) / (numberOfReadBytes/2);
 }

 // Analyze temp buffer.
 tempFloatBuffer[tempIndex%3] = totalAbsValue;
 float temp = 0.0f; 

 for( int i=0; i<3; ++i )
 temp += tempFloatBuffer[i];

现在,我能够检测来自录音机的语音输入,并可以分析音频缓冲区。

缓冲区转换为浮点值,如果增加一定量,则假定背景中存在一些声音并开始录制。但问题是应用程序开始录制所有背景噪音,包括风扇/交流管道声音。

有人能帮我分析一下只检测人声的缓冲区吗?或者有没有其他方法可以从录音机输入中检测人声?

先谢谢你,

共有3个答案

龙昊焱
2023-03-14

如果你想有一个干净的录音,你可以

  1. 过滤来自语音的噪声,您可以使用FFT并应用低通、高通和带通滤波器等滤波器使用FFT和滤波器进行过滤

2.过滤后,噪音会减少,你可以使用语音识别API的

API的

过滤越多越好,噪音越少,识别越多,但在过滤时要小心,因为它也可以去除声音和噪音。

另请阅读有关 FFt 的更多信息

人声的快速傅里叶变换

希望这有帮助:)

祁霖
2023-03-14

对于语音检测,尝试ftt算法。

对于噪音,尝试speex库。

郑宏朗
2023-03-14

语音检测没那么简单。有几种算法,其中一些已发布,例如GSM VAD。有几个开源VAD库可用,这里讨论其中一些

 类似资料:
  • 问题内容: 尽管我在此站点上有许多有关音高检测概念的问题……他们都处理了我不熟悉的神奇 FFT 。我正在尝试构建需要实现音高检测的Android应用程序。我绝对不了解用于执行此操作的算法。 它不能 是 硬可以吗?毕竟,Android市场上大约有80亿个吉他调音器应用程序。 有人可以帮忙吗? 问题答案: 快速傅立叶变换将功能从时域更改为频域。因此,而不是在那里是信号,你是从麦克风获取和是信号的时间指

  • 问题内容: 我有200多个MP3文件,我需要使用静音检测来拆分其中的每个文件。我尝试了Audacity和WavePad,但它们没有批处理过程,将它们一一制作很慢。 场景如下: 分割曲目,而静音2秒或更长时间 然后在这些音轨的开头和结尾添加0.5 s并将其另存为.mp3 BitRate 192立体声 标准化卷以确保所有文件的卷和质量相同 我尝试了FFmpeg,但没有成功。 问题答案: 我发现pydu

  • 问题内容: 我正在寻找一种将文件中的音频数据馈送到麦克风的方法,因此,当第三方应用程序(例如 arecord 或Chromium的“按语音搜索”功能)使用麦克风进行音频输入时,它们会从文件中接收音频数据代替。 这是我的情况 :我编写的一个应用程序记录了来自麦克风的音频数据(使用ALSA)并将其保存到文件(audioFile0.raw)中。在将来的某个未知时间点,某些未知的第三方应用程序(例如,我没

  • 问题内容: 之前,我问过有关使用FFT和Complex class获取频率wav音频的 问题, 在那里,我需要从AudioRecord输入->从麦克风计算FFT值,以某种方式设法获得FFT值… 现在,我需要从之前保存的* .wav音频文件中计算FFT值,然后将音频保存到项目中“ res”文件夹中的“ raw”文件夹中 我仍然使用相同的FFT类:http : //www.cs.princeton.e

  • 我有一个叫“土豆音乐”的音乐机器人,它是一个音乐机器人。目前,机器人按照我希望的方式执行命令。但是一旦我停止在本地托管机器人并将其部署在Heroku上,就有一些错误开始出现。 我有一个名为“播放”的命令,每当我执行该命令时,它都应该在语音频道上播放歌曲。命令在命令开头有一个条件,用于检查用户是否已经在语音频道中。但是在我在Heroku上托管了这个机器人之后,一旦我执行命令,它就会一直告诉我我没有连

  • 我想在Discord语音频道中录制音频,并使用Discord机器人将其保存到文件中。 我收到音频每20毫秒作为pcm编码字节[],我想保存到一个文件。MP3是首选,但我没有其他文件格式的问题,如ogg(它可能更容易)。 我正在使用JDA版本我还包括lavaplayer版本用于其他功能。如果这些库是一个很好的库,这将是很有帮助的,但是如果我必须包含更多的库,这是没有问题的。