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. macOS Sierra 10.12 安裝mysql 5.7.1出現錯誤2. mysql - 拖拽重排序后怎么插入數據庫?3. android - 安卓做前端,PHP做后臺服務器 有什么需要注意的?4. javascript - 按鈕鏈接到另一個網址 怎么通過百度統計計算按鈕的點擊數量5. mysql 獲取時間函數unix_timestamp 問題?6. mysql - 僅僅只是把單引號與反斜杠轉義不用prepare statement能否避免sql注入?7. php - 生產環境下,給MySQL添加索引,修改表結構操作,如何才能讓線上業務不受影響?8. mysql主主同步,從庫不同步應該怎么解決?9. mysql在限制條件下篩選某列數據相同的值10. 新入手layuiadmin,部署到tp中。想用php自已寫一個后臺管理系統。
