python-3.x - 如何解决 webrtcvad.Error:处理帧时出错?
问题描述
import glob
import scipy.io.wavfile as wav
import pandas as pd
import numpy as np
import scipy
import librosa
import webrtcvad
def get_vector(sig,rate):
vec=np.empty((1,3))
start=0
end=320
while(sig.shape[0]>=end+160):
vad = webrtcvad.Vad()
vad.set_mode(2)
res=vad.is_speech(sig[start:end].tobytes(),rate) #speech_probability
zero_crosses = np.nonzero(np.diff(sig[start:end]>0))[0].shape[0]/0.02 # zero crosses
f=scipy.fft(sig[start:end])
f0=min(np.absolute(f)) # f0 frequency
start=start+160
end=end+160
vec=np.vstack((vec,np.array([res,zero_crosses,f0],ndmin=2)))
mfcc_feat=librosa.feature.mfcc(sig,rate,numcep=12,winlen=0.020)[0:vec.shape[0],:] # mfcc
fbank=librosa.feature.melspectrogram(sig,rate,nfilt=5)[0:vec.shape[0],:] # log filterbank energies
mfcc_grad=np.gradient(mfcc_feat,axis=0) # mfcc first derivative
final_feature=np.hstack((mfcc_feat,mfcc_grad,fbank,vec))
return final_feature
df=pd.DataFrame()
for i in range(1,6):
for file in glob.glob("Actor_0102/*.wav".format(i)):
print(file)
(sig,rate,) = librosa.load(file)
# get mfcc
mfcc_feat = librosa.feature.mfcc(sig,rate)
# get filterbank energies
fbank_feat = librosa.feature.melspectrogram(sig,rate)
final_vector=get_vector(sig,rate)
feed_dict={"Features":final_vector.astype(np.float64),"name":file.split('/')[-1].split(',')[0]}
df=df.append(feed_dict,ignore_index=True)
df.to_csv("Mfccfeatures.csv")
我正在使用 RAVDESS 数据集并出现错误:
webrtcvad.Error: Error while processing frame
当我尝试创建多个音频文件的功能并将它们存储在 CSV 文件中时
解决方案
我也遇到了同样的错误信息,终于解决了。
(不知道你的问题和我的问题是否相似……)
您是否已经检查过音频的采样率?webrtcvad 这么说
The WebRTC VAD only accepts 16-bit mono PCM audio, sampled at 8000, 16000, 32000 or 48000 Hz
。
当我尝试 48000(最初是 44100)的速率时,它起作用了。
推荐阅读
- linux - Curl 函数无法解析来自 bash 中变量的代理
- android - 一段时间后服务停止Android 10
- php - 在我的数组 API 中获取博客类别时遇到问题
- javascript - 剑道网格过滤器定制
- pandas - 加快 pandas 到 numpy 的转换
- json - 在合约 SmartContract 中找不到函数 uploadData - Hyperledger Fabric
- python - 为什么前馈神经网络中的简单二元分类会失败?
- reactjs - 为什么排序时元素不在正确的位置?
- ruby-on-rails - 控制器中的 ActionController::UnknownFormat (#index)
- javascript - 从动态添加的 onClick 事件调用时,Javascript CSS 显示不起作用