请问,如何找到一个pcm或wave音频文件中的静音时间,文件中只有两种情况,静音和嘟的声音,up送分!

jincai78 2003-11-28 09:52:06

我要从pcm或wave文件中,找出静音时间,这个文件中的声音是有规律的,比如打电话是的嘟嘟声,闹钟声,上小学的下课铃声等,就是一会有声音,然后间隔一会在响。

从网上收集的资料:

只进行静音检测很简单,基本原理如下:

1.将语音样本归一化到[-1,1]之间。

2.计算各帧语音的能量,平方和、绝对值和均可。

3.能量低于某个阈值的帧即为静音帧。

注:阈值通过实际测试来确定的话效果好一些,比如有轻微背景噪声时阈值就要大一些。

第1步的归一化也可不做,也可以归一化到[-a,a]之间,归一化的目的是使计算出来的能量具有某种相对性,同时保证能量计算不会溢出。

但还是不知道如何下手, 请大虾帮忙。

...全文
842 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jincai78 2003-12-02
  • 打赏
  • 举报
回复

经过不懈努力,终于解决问题了,谢谢大家的关注!

CSwain 2003-12-01
  • 打赏
  • 举报
回复
静音确实是128,但现在是读出的数据是unsigned linear的,而不是A-law的,不知道是怎么回事。

superS 2003-12-01
  • 打赏
  • 举报
回复
8位的是0到255,所以127或者128应该是绝对静音,16位的是-32768到32767,所以0应该是绝对静音吧。
对于这一点如果想确定搞明白,可以使用一个录音软件,如soundforge产生一个8位或16位的静音文件,然后用你的软件打或16位编辑软件打开看一下。

确定了之后,你就可以再确定一个范围,也就是和主要的声音相比有一点点杂音也应算静音。对于这一点就可以使用你顶楼的那些办法了。
CSwain 2003-12-01
  • 打赏
  • 举报
回复
自己再顶。
CSwain 2003-11-29
  • 打赏
  • 举报
回复
up.

jincai78 2003-11-28
  • 打赏
  • 举报
回复
对读取到的振幅数据如何处理呢,是整数吗?
superS 2003-11-28
  • 打赏
  • 举报
回复
首先你要清楚你要操作的声音文件的格式,如果都是PCM的,应该很简单,具体格式可以查这里:
http://www.csdn.net/dev/format
你将发现PCM中很大一部分都是振幅数据(采样点),通过文件头中的信息,你将知道这些振幅是8位的,还是16位的,单、双声道,以及采样频率等等,然后,你就可以对这些振幅数据应用你所说的那些操作了。
jincai78 2003-11-28
  • 打赏
  • 举报
回复
我的声音文件暂时是8bit,
从网上查找的资料发现, 8bit的是0-256之间, 16的是-32768-32767之间

我写了个从文件中读取字节的小程序,没读出一个字节就转换成int,然后判断这个值
是多少,如果小于80则认为是静音,不知道这样行不行?

kingfire 2003-11-28
  • 打赏
  • 举报
回复
你要知道你的声音文件的采样位数16bit,or 8bit
它们表示的范围的中间值就是标准静音值。
但是也不全是,某一段时间内振幅保持一个不变的值,这段时间内听到的也是“静音”,
所以简单处理一下你的声音数据块就可以了。

16,551

社区成员

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

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

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