VAD脚本处理nuscenes数据

参考下面链接配置环境:

VAD/docs/install.md at main · hustvl/VAD (github.com)icon-default.png?t=N7T8https://github.com/hustvl/VAD/blob/main/docs/install.md中间遇到的问题:

Couldn't find a setup script in /tmp/easy_install-wdsk8wzm/scikit_image-0.23.2.tar.gz

参考:error: Couldn't find a setup script in /tmp/easy_install-ian85kkj/scikit_image-0.23.2.tar.gz · Issue #251 · fundamentalvision/BEVFormer (github.com)

解决方案是

pip install scikit-image==0.21.0

然后开始运行,还是会遇到一系列问题:

第一个 缺少llvmlite库

  File "/home/dwc_42526/anaconda3/envs/vad/lib/python3.8/site-packages/numpy/__init__.py", line 320, in __getattr__
    raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'long'

原因是numpy的版本太高了,指定低版本安装一下:

pip install numpy==1.21.1

 

No module named 'llvmlite.llvmpy'

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些思路。 首先,VAD是指语音活动检测,可以用来识别音频中的静音片段。Python中有很多VAD库可供选择,比如py-webrtcvad、pysoundfile等。这里以py-webrtcvad为例,介绍如何批量处理wav文件中的静音片段。 1. 安装py-webrtcvad库 ``` pip install webrtcvad ``` 2. 编写Python程序 ```python import os import wave import contextlib import webrtcvad # 设置参数 frame_duration = 30 # 每帧时长,单位ms sample_rate = 16000 # 采样率,单位Hz vad_mode = 3 # VAD模式,0-3 # 初始化VAD vad = webrtcvad.Vad() vad.set_mode(vad_mode) # 定义判断静音函数 def is_silence(data): return vad.is_speech(data, sample_rate) # 批量处理wav文件 def batch_process_wav_files(src_dir, dst_dir): # 遍历源目录下的所有wav文件 for filename in os.listdir(src_dir): if filename.endswith('.wav'): src_path = os.path.join(src_dir, filename) dst_path = os.path.join(dst_dir, filename) with contextlib.closing(wave.open(src_path, 'rb')) as wf: # 获取音频时长和帧数 nframes = wf.getnframes() duration = int(nframes / sample_rate * 1000) # 单位ms nframes_per_frame = int(sample_rate / 1000 * frame_duration) nframes_per_chunk = nframes_per_frame * 10 # 每次处理10帧 nchunks = int(nframes / nframes_per_chunk) # 处理音频数据 with wave.open(dst_path, 'wb') as wf2: wf2.setparams(wf.getparams()) for i in range(nchunks): start_frame = i * nframes_per_chunk end_frame = (i + 1) * nframes_per_chunk data = wf.readframes(nframes_per_chunk) if not is_silence(data): wf2.writeframes(data) # 处理最后一块数据 start_frame = nchunks * nframes_per_chunk end_frame = nframes data = wf.readframes(end_frame - start_frame) if not is_silence(data): wf2.writeframes(data) # 示例 src_dir = '/path/to/src/dir' dst_dir = '/path/to/dst/dir' batch_process_wav_files(src_dir, dst_dir) ``` 以上代码中,首先设置了一些参数,包括每帧时长、采样率和VAD模式。然后初始化了一个VAD对象,并定义了一个判断静音的函数。最后编写了批量处理wav文件的函数,该函数遍历源目录下的所有wav文件,读取音频数据并进行处理,将静音片段剪切掉后保存到目标目录中。 请注意,以上代码仅供参考,需要根据实际需求进行修改。同时,为了保证代码的可读性和可维护性,建议添加注释和异常处理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值