返回顶部
l

local-voice-reply本地语音回复

Local OPUS/Ogg voice-reply pipeline for Feishu/Discord with structured voice customization. Default voice is Juno (`voice/juno_ref.wav`), with support for registered custom voices via API. Includes FastAPI server + scripts for stable generation/sending. Requires ffmpeg on PATH and Python deps (torch/torchaudio/chatterbox-tts/fastapi/uvicorn). Activate for /voice_mode_on or any user request for voice/audio reply.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 3.3.3
安全检测
已通过
400
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

local-voice-reply

本地语音回复

使用此技能将文本转换为克隆/自定义语音音频回复,并可靠地发送到飞书或Discord。

结构化技能定义

  • - 用途:以Opus/Ogg格式进行本地低延迟语音回复。
  • 渠道:飞书 + Discord。
  • 默认语音:juno(参考文件:voice/juno_ref.wav)。
  • 自定义语音模式
1) 基于文件:替换/更新 voice/juno_ref.wav。 2) 基于注册:通过 POST /voice/register 上传/注册语音,然后通过 voice_name 调用。
  • - 输出:.opus(Ogg容器),位于 .openclaw/media/outbound/voice-server-v3/(或 TARVISVOICEOUTPUT_DIR)。
  • 控制脚本
- scripts/sendvoicereply.ps1(服务器API路径) - scripts/generatecudavoice.ps1(稳定的本地CUDA生成路径)

服务器实现与技能位于同一目录(非工作区根目录):

  • - server/voiceserverv3.py(FastAPI路由)
  • server/voice_engine.py(生成和缓存引擎)

语音资源也与技能位于同一目录:

  • - voice/

运行时要求

  • - 必须安装 ffmpeg 并确保其在 PATH 环境变量中可用(Opus编码所需)。
  • 服务器所需的Python包:
- fastapi - uvicorn - python-multipart - chatterbox-tts - torch - torchaudio - numpy
  • - 首次启动时,ChatterboxTTS.from_pretrained() 可能会下载模型资源,因此首次运行可能需要网络访问和额外磁盘空间。
  • 可选环境变量:
- TARVISVOICEOUTPUT_DIR:覆盖生成的Opus文件的写入路径。 - TARVISVOICEDEVICE:强制选择设备(cuda/gpu、mps 或 cpu)。

持久化行为

  • - 通过 POST /voice/register 上传的语音样本持久化存储在 server/voices/ 下。
  • 缓存和注册数据持久化存储在 server/voicecache/ 下。
  • 生成的Opus输出默认写入 .openclaw/media/outbound/voice-server-v3/(或设置 TARVISVOICEOUTPUTDIR 时写入该路径)。
  • POST /output/cleanup 仅删除配置的输出目录中的暂存 .opus 文件及其 .json 侧车文件。

使用此工作流程

  1. 1. 确保从本技能文件夹运行本地 v3.3 TTS服务器:
- python -m uvicorn --app-dir server voiceserverv3:app --host 127.0.0.1 --port 8000
  1. 2. 调用 /speak,传入 text(以及可选的 speed、exaggeration、cfg)。
- voice_name 默认为 juno。
  1. 3. 从服务器接收 Opus格式(audio/ogg)的Juno语音回复。
  2. 将最终媒体文件保存到允许的路径:
- C:\Users\hanli\.openclaw\media\outbound\
  1. 5. 使用 message 工具发送:
- action=send - filePath=<允许的路径> - asVoice=true - 飞书:channel=feishu - Discord:channel=discord

语音自定义指南

A) 替换默认的Juno参考文件

  1. 1. 将 voice/junoref.wav 替换为目标参考语音样本。
  2. 保持样本干净(单人说话、低噪音、发音清晰)。
  3. 重启服务器并使用 voicename=juno 进行测试。

B) 注册额外的命名语音

  1. 1. 调用 POST /voice/register,传入参考样本和目标 voicename。
  2. 确认注册信息出现在 server/voices/ 下。
  3. 在 /speak 或 /speakstream 中使用该 voice_name 生成语音。

默认值

  • - voice_name:juno
  • speed:1.2
  • 输出格式:服务器 /speak 返回的Ogg容器中的Opus格式(无需后转换)
  • Discord兼容性:支持Ogg/Opus格式,可通过 asVoice=true 作为语音/音频发送

本版本的性能改进

  • - 启动时仅缓存一次模型能力查询结果。
  • 合成过程中使用 torch.inferencemode() 以减少开销。
  • 为 /speak 和 /speakstream 复用短语缓存。
  • 改进了长CJK文本的分块行为,避免过大的分块。
  • 保留延迟指标,用于基准测试和调优。

常见故障及修复

  • - 错误:LocalMediaAccessError ... path-not-allowed
  • 修复:在发送前将文件复制到 .openclaw/media/outbound 目录下。

脚本

使用 scripts/sendvoicereply.ps1 以默认设置(voice_name=juno、speed=1.2)直接生成Opus文件。
对于较长文本(或传入 -Stream 参数时),它会自动选择 /speak_stream 以获得更好的吞吐量。

在更严格的执行审批策略下,如需稳定的CUDA生成命令模式,请使用:

  • - scripts/generatecudavoice.ps1 -Text ...

这保持了外部命令形状的固定,使 allow-always 更具可复用性。

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 local-voice-reply-1776188469 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 local-voice-reply-1776188469 技能

通过命令行安装

skillhub install local-voice-reply-1776188469

下载

⬇ 下载 local-voice-reply v3.3.3(免费)

文件大小: 15.24 KB | 发布时间: 2026-4-15 13:35

v3.3.3 最新 2026-4-15 13:35
docs: structured skill definition + explicit voice customization guide (juno_ref replacement and /voice/register flow)

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部