一个比较难的问题,对音频数据有研究的进

fengge8ylf 2012-03-07 09:35:11
在录音过程中,判断说话人声音的大小,当大于某个值时就自动保存数据,当低于某个值时就认为说话结束,停止保存数据。
如果判断声音的大小呢???
...全文
195 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑泡泡选手 2012-03-09
  • 打赏
  • 举报
回复
那段代码应该是用于直接采集音频,PCM格式的·原始音频数据
黑泡泡选手 2012-03-09
  • 打赏
  • 举报
回复
如果是静音的话,把音频采样数据写成0,应该就可以了
alexander_david 2012-03-09
  • 打赏
  • 举报
回复
刚才测试了上面的程序,用了一段电视播音(纯语音),噪声稍微有点大,效果还是不错的。

但是用来检测歌曲就不行了。

如果需要检测有无音频该用什么办法呢,就是说只要检测是否有声音,不管声音是语音还是音乐啥的?

郁闷。

alexander_david 2012-03-09
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/sjdev/2086538
从上面的网页下载了一个,编译运行了一下,似乎是可以工作的。
向立天 2012-03-09
  • 打赏
  • 举报
回复
通过能谱来判断应该可以吧
alexander_david 2012-03-09
  • 打赏
  • 举报
回复
在csdn的下载频道,你搜索“语音端点检测”就可以了。
fengge8ylf 2012-03-09
  • 打赏
  • 举报
回复
但这个程序是检测文件的
alexander_david 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 alexander_david 的回复:]

刚才测试了上面的程序,用了一段电视播音(纯语音),噪声稍微有点大,效果还是不错的。

但是用来检测歌曲就不行了。

如果需要检测有无音频该用什么办法呢,就是说只要检测是否有声音,不管声音是语音还是音乐啥的?

郁闷。
[/Quote]

上面说的“噪声稍微有点大”,不是说这个算法会引入噪声,而是我用的信号源就是噪声有点大,这个程序处理这个噪声有点大的素材,结果都比较令人满意,那么处理信噪比高的素材应该更不在话下了。

这个算法本身是不会引入噪声的,它对素材应该是只读的。

刚才看了一下上面的回复,忽然觉得这句话可能会引起误解,所以特别说明一下。哈哈。

我觉得普通的要求,这个程序应该可以满足了。
fengge8ylf 2012-03-09
  • 打赏
  • 举报
回复
谢谢alexander_david提供的资料
fengge8ylf 2012-03-09
  • 打赏
  • 举报
回复
如果全是0 就是静音
但DSOUND采集到的数字的大小就代表音量的大小?
fengge8ylf 2012-03-09
  • 打赏
  • 举报
回复
(黑泡泡选手)

我的就是直接采集的音频,用DSOUND采集的
fengge8ylf 2012-03-08
  • 打赏
  • 举报
回复
上面的是求一段时间的音量的平均值吧
sample[i]的大小代表音量的大小?
fengge8ylf 2012-03-08
  • 打赏
  • 举报
回复
楼上的方法是求平均值吧
samples[i]值的大小就是音量的大小吗
黑泡泡选手 2012-03-08
  • 打赏
  • 举报
回复

unsigned short CalcVolume(unsigned short *samples, unsigned long sampleCount)
{
unsigned int accum = 0;
for (unsigned long i=0; i<sampleCount; i++)
{
if (sample[i] >= 0)
accum += samples[i];
else
accum += -samples[i];
}
float average = accum / (float) sampleCount;
int volume = average;
return (unsigned short) volume;
}
alexander_david 2012-03-08
  • 打赏
  • 举报
回复
VAD
语音激活检测,就是二楼说的断点检测。

这个方面的资料很多,方法也很多,简单地通过幅度来判断是不合适的。
zhjianjun 2012-03-08
  • 打赏
  • 举报
回复
错了,语音保存检测时间N2。
怎么修正不了自己的贴子?
zhjianjun 2012-03-08
  • 打赏
  • 举报
回复
这个应该不难吧?
设采样缓冲区长度Tms,作为检测的时间单位。
环境声音幅度A1
静音检测时间N1
语音保存启动幅度A2
语音保存检测时间N1
连续N2个时间内幅度有超过A2,开始保存(包括前面那N1个)
连续N1个时间内幅度均低于A1,停止保存。
参数值的大小由实测来确定看效果如何。
fengge8ylf 2012-03-08
  • 打赏
  • 举报
回复
没人知道吗
LiuYinChina 2012-03-08
  • 打赏
  • 举报
回复
端点检测
fengge8ylf 2012-03-08
  • 打赏
  • 举报
回复
这个问题有点专业了 呵呵
如果谁能实现,我花钱买也可以。
加载更多回复(6)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧