python - 怎样表达一段语音的强度(响度)?
问题描述
我希望通过一段语音分析语音的强度(响度)。
因为是工科狗而非理科狗,且对于音频信号分析是外行,只简单看了下FFT,所以对于自己分析语音强度的方法没有安全感。希望这方面的高手能够指导下。非常感谢!!!
以下是我获取语音信号数据的过程。123.wav语音文件来自于百度合成的mp3转码,所以这段语音就算存在噪音也应该是微量的,这里不用再滤波了(就算滤波也不知道滤波器系数该用什么)。我猜想到此应该是没有问题的?
# -*- coding: utf-8 -*-import numpy as npimport pylab as plimport wavef = wave.open('/home/dyan/123.wav', 'rb')# 读取格式信息# (nchannels, sampwidth, framerate, nframes, comptype, compname)params = f.getparams()nchannels, sampwidth, framerate, nframes = params[:4]# 读取波形数据str_data = f.readframes(nframes)f.close()wave_data = np.fromstring(str_data, dtype=np.short)# 在时间轴上画波形图# 以上nchannels=1, sampwidth=2, framerate=16000lenth=len(wave_data)ti=lenth/16000.0t = np.arange(0, ti, ti/lenth)pl.plot(t,wave_data)pl.show()
波形图(时间长度大约1.8s)我希望在播放这段语音的时候,通知语音的强度,但是显然频率太快了,并不要这么快,比如0.2s一次统计也许是比较合适的。我有2个想法,但是不确定,没有安全感:
1、每0.2s求振幅绝对值平均值。2、每0.2s取振幅绝对值最大值。
不了解音频信号处理,所以完全不知道这两种方案中的一种能不能代表语音强度。或者应该用其他的方式。
综上所述,2个问题:
1、这样获取波形数据wav_data是否正确?2、怎样表达这段语音的强度(响度)?
问题解答
回答1:声音就是机械振动波
它的强度就是振幅大小
高音和低音是 频率
相关文章:
1. android - NavigationView 的侧滑菜单中如何保存新增项(通过程序添加)2. 老师 我是一个没有学过php语言的准毕业生 我希望您能帮我一下3. 编程学习心得分享(共80条)4. 关于thinkphp 5.1中,ajax提交数据url的格式写法,加花括号就出错,请老师指点5. php7.3.4中怎么开启pdo驱动6. tp5 不同控制器中的变量调用问题7. 提示语法错误语法错误: unexpected ’abstract’ (T_ABSTRACT)8. 这段代码既不提示错误也看不到结果,请老师明示错在哪里,谢谢!9. ueditor上传服务器提示后端配置项没有正常加载,求助!!!!!10. php - 一个操作请求多个服务如何保证数据的安全?
