mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 23:23:55 +08:00
* 🦄 refactor(web): 修改zhikongtaiweb到web * 🦄 refactor: 重写前端 路由守护尚未写完 * 🦄 refactor: 标准化路由 * update:前端重写,保留后端 * update:添加前端代码 * update:pip转成poetry启动 * update:增加mem0ai包依赖 * update:文档增加mem0ai的描述 * feat: play online mp3 (#181) Co-authored-by: 欣南科技 <huangrongzhuang@xin-nan.com> * 修改前端代码 * update:调整项目目录 * update:优化 * update:配置文件去除8002端口 * update:增加开发说明 * update:更新开发协议 --------- Co-authored-by: kalicyh <34980061+kaliCYH@users.noreply.github.com> Co-authored-by: hrz <1710360675@qq.com> Co-authored-by: freshlife001 <talent@mises.site> Co-authored-by: CGD <3030332422@qq.com>
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
dependencies = ['torch', 'torchaudio']
|
|
import torch
|
|
import os
|
|
import sys
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))
|
|
from silero_vad.utils_vad import (init_jit_model,
|
|
get_speech_timestamps,
|
|
save_audio,
|
|
read_audio,
|
|
VADIterator,
|
|
collect_chunks,
|
|
OnnxWrapper)
|
|
|
|
|
|
def versiontuple(v):
|
|
splitted = v.split('+')[0].split(".")
|
|
version_list = []
|
|
for i in splitted:
|
|
try:
|
|
version_list.append(int(i))
|
|
except:
|
|
version_list.append(0)
|
|
return tuple(version_list)
|
|
|
|
|
|
def silero_vad(onnx=False, force_onnx_cpu=False, opset_version=16):
|
|
"""Silero Voice Activity Detector
|
|
Returns a model with a set of utils
|
|
Please see https://github.com/snakers4/silero-vad for usage examples
|
|
"""
|
|
available_ops = [15, 16]
|
|
if onnx and opset_version not in available_ops:
|
|
raise Exception(f'Available ONNX opset_version: {available_ops}')
|
|
|
|
if not onnx:
|
|
installed_version = torch.__version__
|
|
supported_version = '1.12.0'
|
|
if versiontuple(installed_version) < versiontuple(supported_version):
|
|
raise Exception(f'Please install torch {supported_version} or greater ({installed_version} installed)')
|
|
|
|
model_dir = os.path.join(os.path.dirname(__file__), 'src', 'silero_vad', 'data')
|
|
if onnx:
|
|
if opset_version == 16:
|
|
model_name = 'silero_vad.onnx'
|
|
else:
|
|
model_name = f'silero_vad_16k_op{opset_version}.onnx'
|
|
model = OnnxWrapper(os.path.join(model_dir, model_name), force_onnx_cpu)
|
|
else:
|
|
model = init_jit_model(os.path.join(model_dir, 'silero_vad.jit'))
|
|
utils = (get_speech_timestamps,
|
|
save_audio,
|
|
read_audio,
|
|
VADIterator,
|
|
collect_chunks)
|
|
|
|
return model, utils
|