mosi-studio

MOSI Studio 音频全套能力:语音转文字(ASR)、文字转语音(TTS)、 多说话人对话合成、声音克隆、飞书语音气泡。 两类触发场景: 1. 消息中包含 "[media attached:"、"audio/ogg"、"audio/opus" 或 路径 /home/openclaw/.openclaw/media/inbound/ 时——用户发来了语音, 必须立刻转写,禁止说"我没有语音识别能力"。 2. 用户主动要求:TTS、文字转语音、语音合成、生成语音、克隆声音、 声音克隆、多说话人、对话合成、语音气泡、发语音、转语音、 "text to speech"、"voice synthesis"、"generate audio"、 "voice clone"、"multi-speaker"。 用户如果要求用语音回复,除非情况复杂需要说明,否则只需要回一条语音。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "mosi-studio" with this command: npx skills add mkkb473/moss-tts-family-chatbot

MOSI Studio 音频全套 Skill

文件路径铁律(禁止例外) 所有生成的音频文件必须保存到 ~/.openclaw/workspace/。 绝对不能用 /tmp//var/tmp/ 或相对路径。 OpenClaw 媒体策略会静默拦截 workspace 以外的文件——不报错,直接失败。 错误示例:ffmpeg -i x.wav /tmp/out.opus 正确示例:ffmpeg -i x.wav ~/.openclaw/workspace/out.opus

支持的能力:

功能模型脚本
文字转语音(TTS)moss-ttsscripts/mosi_tts.sh / mosi_tts.py
指令式语音生成moss-voice-generatorscripts/mosi_voice_generator.sh
语音转文字(ASR)scripts/mosi_asr.sh
多说话人对话合成moss-ttsdscripts/mosi_dialogue.sh
音效生成moss-sound-effectscripts/mosi_sound_effect.sh
声音克隆scripts/mosi_voice.py
飞书语音气泡scripts/mosi_feishu_voice.sh

Base URL:https://studio.mosi.cn


环境准备

API Key

Key 通过 Kubernetes Secret 注入为 MOSI_TTS_API_KEY,对话中不得透露。

echo "key已配置: $([ -n "$MOSI_TTS_API_KEY" ] \
  && echo yes || echo NO)"

依赖清单

下表列出本 skill 用到的所有外部工具,以及缺失时的替代方案:

工具用途缺失时的处理
nodeJSON 处理、base64 解码基础镜像自带,始终可用
curlHTTP 请求基础镜像自带,始终可用
ffmpegWAV→OPUS 转换(语音气泡必需)无法发语音气泡,TTS 仍可用
ffprobe获取音频时长(随 ffmpeg 一起安装)同上
python3 + python3-requests声音克隆脚本克隆功能不可用,其他功能正常
bc浮点数计算awknode -e 替代
jqJSON 解析node -e 替代
wget文件下载curl -O 替代
sox音频格式分析/转换ffprobe 替代
mediainfo媒体文件元信息ffprobe 替代
unzip / zip压缩包处理
tree目录结构显示ls -R 替代
nano文件编辑

一键检查当前环境

for cmd in node curl ffmpeg ffprobe python3 \
           bc jq wget sox mediainfo unzip zip; do
  printf "%-12s %s\n" "$cmd" \
    "$(which $cmd 2>/dev/null || echo '未安装')"
done

安装缺失依赖

推荐方式:重新构建镜像(Dockerfile.py3 已包含全部依赖):

# 在项目根目录执行
docker build -f Dockerfile.py3 -t openclaw-custom .

临时安装(有 root 权限,重启后失效):

apt-get update && apt-get install -y --no-install-recommends \
  python3 python3-pip python3-requests \
  ffmpeg bc jq wget sox mediainfo unzip zip tree nano

没有 root 权限时

  • 基础 TTS / ASR / 对话合成:只需 curl + node,脚本可直接运行
  • 飞书语音气泡:必须有 ffmpeg,无权限时请让用户重建镜像
  • 声音克隆:需要 python3,无权限时功能不可用

1. 文字转语音(TTS)

接口POST /api/v1/audio/speech 模型moss-tts 输出:24 kHz WAV,响应中 base64 编码

Shell 脚本(无额外依赖)

bash scripts/mosi_tts.sh --text "你好,世界"
# 保存到:~/.openclaw/workspace/tts_output.wav

bash scripts/mosi_tts.sh \
  --text "Hello, world" \
  --voice-id 2001931510222950400 \
  --output ~/.openclaw/workspace/my_audio.wav

Python 脚本(需要 python3 + requests)

python3 scripts/mosi_tts.py \
  --text "你好,世界" \
  --output ~/.openclaw/workspace/tts_output.wav

输出路径规则:必须用 ~/.openclaw/workspace/, workspace 以外的路径会被 OpenClaw 媒体策略拦截。

请求参数

参数类型默认值说明
modelstring固定 moss-tts
textstring要合成的文本
voice_idstring公共或自定义声音 ID
expected_duration_secfloat自动目标时长(0.5–1.5× 自然语速)
sampling_params.temperaturefloat1.7中文 1.7,英文 1.5
sampling_params.max_new_tokensint512最大 token 数
meta_infoboolfalse是否返回性能指标

内置公共声音

声音 ID名称风格
2001257729754140672阿树轻松自然(默认)
2001931510222950400程述播客、理性
2002941772480647168阿宁温柔、暖心
2020009311371005952台湾女声柔和、治愈
2020008594694475776北京男声清晰、标准
2001286865130360832周周独白、讲故事
2001898421836845056子琪活力、明亮
2001910895478837248小满甜美、开朗
2002991117984862208梁子专业、播报

2. 指令式语音生成(Voice Generator)

接口POST /api/v1/audio/speech 模型moss-voice-generator 输出:24 kHz WAV,响应中 base64 编码

通过自然语言描述所需的声音特征,即可生成对应风格的语音。 如果用户需要生成特定的某个名人的声音,可以告诉用户自己需要上网找一段音色,然后用这个音色调用voice clone接口(找不到就算了)。 无需指定 voice_id,用文字描述即可。

Shell 脚本

# 播音腔女声
bash scripts/mosi_voice_generator.sh \
  -t "各位观众朋友们大家好,欢迎收看今天的新闻节目。" \
  -i "播音腔女声,专业、清晰、有亲和力,像央视新闻主播"

# 温柔男声
bash scripts/mosi_voice_generator.sh \
  -t "晚安,好梦" \
  -i "一个温柔的男声,轻柔舒缓"

# 有活力的年轻女声
bash scripts/mosi_voice_generator.sh \
  -t "欢迎来到我们的节目!" \
  -i "年轻有活力的女声,热情开朗"

# 指定输出路径
bash scripts/mosi_voice_generator.sh \
  -t "要生成的文字" \
  -i "声音描述" \
  -o ~/.openclaw/workspace/output.wav

# 获取性能指标
bash scripts/mosi_voice_generator.sh \
  -t "测试文本" \
  -i "专业女声" \
  --meta-info

请求参数

参数类型必填说明
modelstring固定 moss-voice-generator
textstring要转换成语音的文字
instructionstring声音风格描述,如:一个温柔的女声
sampling_params.temperaturefloat采样温度,默认 1.5
sampling_params.top_pfloat核采样阈值,默认 0.6
sampling_params.top_kintTop-K 采样,默认 50
meta_infobool是否返回性能指标,默认 false

instruction 描述技巧

描述越详细,生成的声音越符合预期:

# 好的描述示例
"播音腔女声,专业、清晰、有亲和力,像央视新闻主播"
"年轻有活力的男声,语速稍快,充满热情"
"温柔知性的女声,语速缓慢,像在讲睡前故事"
"沉稳有力的男声,低沉磁性,适合广告旁白"

# 不够好的描述
"女声"  # 太笼统
"好听的声音"  # 没有具体特征

请求示例

{
  "model": "moss-voice-generator",
  "text": "各位观众朋友们大家好",
  "instruction": "播音腔女声,专业、清晰、有亲和力",
  "sampling_params": {
    "temperature": 1.5,
    "top_p": 0.6,
    "top_k": 50
  }
}

3. 语音转文字(ASR)

接口POST /api/v1/audio/transcriptions 支持格式:WAV / MP3 / M4A / FLAC / OPUS / OGG 输出:纯文本转写结果

接收飞书入站语音(最常见场景)

用户发语音后,OpenClaw 在消息顶部注入:

[media attached: /home/openclaw/.openclaw/media/inbound/XXXXX.ogg (audio/ogg; codecs=opus) | ...]

看到这行时,必须立刻转写,不得跳过

# 路径在 [media attached: ] 之后、第一个空格之前
AUDIO=$(echo "$MSG" \
  | grep -oP '(?<=\[media attached: )[^ ]+')
# 或直接从消息里复制完整路径
AUDIO="/home/openclaw/.openclaw/media/inbound/实际文件名.ogg"

TEXT=$(bash scripts/mosi_asr.sh --file "$AUDIO")
# 然后直接回复 $TEXT 的内容,不要提及"我收到了语音"

主动转写任意音频文件

# 基础用法
bash scripts/mosi_asr.sh --file audio.opus

# 指定语言
bash scripts/mosi_asr.sh --file audio.wav --language zh

# 输出原始 JSON(含时间戳 + 说话人标注)
bash scripts/mosi_asr.sh --file audio.opus --json

响应结构

{
  "asr_transcription_result": {
    "full_text": "你好,这是一段测试语音",
    "segments": [
      {
        "start_s": "0.15",
        "end_s": "2.74",
        "speaker": "S01",
        "text": "你好,这是一段测试语音"
      }
    ]
  },
  "usage": { "credit_cost": 129 }
}

参数说明

参数必填说明
file音频文件(multipart/form-data)
language语言提示:zhen

禁止事项

  • 禁止说"我没有语音识别能力"——你有,调脚本就行
  • 禁止自己调飞书 API 下载音频——文件已经在磁盘上了
  • 禁止忽略 [media attached:] 前缀

4. 多说话人对话合成(TTSD)

接口POST /api/v1/audio/speech(与 TTS 相同) 模型moss-ttsd 输出:24 kHz WAV,base64 编码

适用于播客、访谈、剧情片段、游戏 NPC 对话等场景,支持 1–5 位说话人。

文本格式

每行用 [S1][S2] 等标签标注:

[S1] 你好,今天天气不错。
[S2] 是啊,很适合出去走走。
[S1] 要不要一起去公园?

Shell 脚本

bash scripts/mosi_dialogue.sh \
  --text "[S1] 你好,今天天气不错。
[S2] 是啊,很适合出去走走。
[S1] 要不要一起去公园?" \
  --voice1 2001257729754140672 \
  --voice2 2001931510222950400 \
  --output ~/.openclaw/workspace/dialogue.wav

请求体结构

{
  "model": "moss-ttsd",
  "text": "[S1] 你好!\n[S2] 你好,很高兴认识你。",
  "voice_id":  "2001257729754140672",
  "voice_id2": "2001931510222950400",
  "voice_id3": "(可选,S3)",
  "voice_id4": "(可选,S4)",
  "voice_id5": "(可选,S5)"
}

参数说明

参数说明
text完整对话文本,每行以 [S1]/[S2]/… 开头
voice_idS1 的声音 ID(必填)
voice_id2voice_id5S2–S5 的声音 ID(按需添加)
expected_duration_sec目标总时长(可选)

5. 音效生成

状态:API 接口暂未公开(截至 2026-03)

moss-sound-effect 模型存在,但 studio.mosi.cn 上还没有可用的 REST 接口。通过 /api/v1/audio/speech 调用会返回:

{
  "code": 4000,
  "error": "Invalid Request: unsupported model for /audio/speech: moss-sound-effect"
}

mosi_sound_effect.sh 已预留,待接口上线后可直接使用。 预期请求结构:

{
  "model": "moss-sound-effect",
  "prompt": "heavy rain with distant thunder",
  "duration_sec": 10
}

关注 studio.mosi.cn/docs 获取接口上线通知。


6. 声音克隆

从短音频(建议 10–120 秒)创建自定义声音。

接口清单

方法路径说明
POST/api/v1/files/upload上传音频文件
POST/api/v1/voice/clone从上传文件创建声音
GET/api/v1/voices列出所有自定义声音
GET/api/v1/voices/{voice_id}获取声音详情

完整流程

# Step 1:上传音频(WAV/MP3/M4A/FLAC,最大 100 MB)
python3 scripts/mosi_voice.py upload --file my_voice.wav
# => File ID: 1234567890

# Step 2:克隆
python3 scripts/mosi_voice.py clone \
  --file-id 1234567890 \
  --text "可选的转写文本,提供后质量更好"
# => Voice ID: abc123def

# Step 3:在 TTS 中使用克隆声音
bash scripts/mosi_tts.sh \
  --text "这是我的克隆声音" \
  --voice-id abc123def

# 列出所有声音
python3 scripts/mosi_voice.py list --status ACTIVE

# 获取声音详情
python3 scripts/mosi_voice.py get --voice-id abc123def

mosi_voice.py 需要 python3 + requests, 缺失时参考"环境准备"章节安装。

声音状态说明

状态含义
ACTIVE可正常使用
INACTIVE已禁用
FAILED克隆失败
DELETED已删除

7. 飞书语音气泡

直接用一键脚本,不要自己管理中间文件。 脚本内部已将所有路径固定在 ~/.openclaw/workspace/

一行命令搞定

bash scripts/mosi_feishu_voice.sh \
  --text "你好,世界" \
  --chat-id <CHAT_ID>

<CHAT_ID> 从入站消息 context 中获取: 群聊用 GroupSubject / oc_xxxxxxxx,私聊用 From / ou_xxxxxxxx

可选指定声音:

bash scripts/mosi_feishu_voice.sh \
  --text "你好" \
  --chat-id oc_xxxx \
  --voice-id 2001931510222950400

脚本内部流程

  1. TTS → ~/.openclaw/workspace/tts_output.wav
  2. ffmpeg:WAV → ~/.openclaw/workspace/tts_output.opus
  3. ffprobe 获取时长(毫秒)
  4. $FEISHU_APP_ID / $FEISHU_APP_SECRET 获取 tenant_access_token
  5. 上传 OPUS 到飞书(file_type=opus
  6. 发送语音消息(msg_type=audio

需要 ffmpeg:apt-get install -y ffmpeg


接口限额

限制项数值
TTS RPM5 次/分钟
音效 RPM5 次/分钟
对话合成 RPM5 次/分钟
输出格式24 kHz WAV(base64)
TTS 超时600 秒
最大文本长度约 1 小时音频

常见错误

错误原因解决
MOSI_TTS_API_KEY not setSecret 未注入检查 K8s Secret
{"code":4020}余额不足充值 MOSI 账户
{"code":4029}触发限速等待 60 秒后重试
{"code":5002}声音不存在确认 voice status 为 ACTIVE
{"code":5004}请求超时将文本切分为更短片段
LocalMediaAccessError输出路径被拦截必须用 ~/.openclaw/workspace/
ffmpeg: not found未安装apt-get install ffmpeg 或改用纯 sh 脚本
python3: not found未安装TTS 用 mosi_tts.sh;声音克隆需安装 python3

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

WeChat Tietu Draft

创建微信公众号贴图类型草稿的自动化工具。专门用于创建简化界面的贴图草稿(只有标题和正文),适合图片为主的内容。使用触发词"发布贴图草稿"、"创建贴图草稿"、"贴图草稿"、"微信公众号贴图"或"贴图类型草稿"激活。提供统一入口脚本(skill_main.py)进行状态感知的全流程管理。

Registry SourceRecently Updated
General

Pensions

提供商业养老保险分析、养老金账户模拟、退休收入测算及理财组合建议。

Registry SourceRecently Updated
General

Childcare

提供婴幼儿生长曲线记录、早教互动课程、入托政策查询及疫苗提醒。

Registry SourceRecently Updated
General

Douyin Video Forge

抖音短视频全链路自动化制作。适用于:收到客户项目需要制作抖音推广视频、 策划短视频内容、生成视频脚本、分析抖音热点趋势、制作爆款短视频。 通过浏览器采集抖音热榜和视频数据,生成分段脚本,调用可灵API生成视频并拼接成片。

Registry SourceRecently Updated