怎样表达一段语音的强度(响度)?

发布于 2022-09-04 20:32:06 字数 1207 浏览 18 评论 0

我希望通过一段语音分析语音的强度(响度)。

因为是工科狗而非理科狗,且对于音频信号分析是外行,只简单看了下FFT,所以对于自己分析语音强度的方法没有安全感。希望这方面的高手能够指导下。非常感谢!!!

以下是我获取语音信号数据的过程。123.wav语音文件来自于百度合成的mp3转码,所以这段语音就算存在噪音也应该是微量的,这里不用再滤波了(就算滤波也不知道滤波器系数该用什么)。我猜想到此应该是没有问题的?

# -*- coding: utf-8 -*-
import numpy as np
import pylab as pl
import wave
f = 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=16000
lenth=len(wave_data)
ti=lenth/16000.0
t = 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、怎样表达这段语音的强度(响度)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白云悠悠 2022-09-11 20:32:06

声音就是机械振动波

它的强度就是振幅大小

高音和低音是 频率

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文