用途
Piper 技能用于将文本或 Markdown 文件转换为自然语音音频,底层使用 Piper TTS。当用户表达“convert text to speech”“text to audio”“read this aloud”等类似意图时触发。
主要能力
- 支持两种输入形式:文件路径(.md 或 .txt)或直接的字面文本。
- 输出为 .wav 音频文件,路径由用户指定。
- 对 Markdown 文件会先进行清理,去除 YAML frontmatter、Markdown 格式(标题、粗体、斜体、链接)、代码块和行内代码、HTML 标签与注释、Emoji 和特殊 Unicode、URL,得到适合朗读的纯文本。
- 可配置语音模型、语速、句间静音时长和音量。
- 支持批量处理目录中的多个 Markdown 文件。
- 生成后可校验输出文件是否存在且非空,并可使用 ffprobe 获取音频时长。
- 支持按指定语法将生成的音频链接回原始输入:
![[The Converted Audio File.wav]]。
参数
- input(字符串,必填):输入文件路径(.md 或 .txt)或字面文本。
- output(字符串,必填):输出 .wav 文件路径。
- voice(字符串,可选,默认 en_US-amy-medium):语音模型名称。
- speed(浮点数,可选,默认 0.67):语速(0.5=慢,0.67=1.5x,1.0=正常,1.5=快)。
- sentence_silence(浮点数,可选,默认 0.3):句子之间的静音秒数。
- volume(浮点数,可选,默认 1.0):音量倍数。
使用方式
- 校验输入:判断输入是文件还是文本。若是文件必须存在且可读;若为 Markdown 则进入清理步骤;若为文本文件或字面文本则直接进入合成步骤。
- 清理 Markdown(如适用):使用清理脚本去掉不适合朗读的内容,输出清理后的文本文件。
- 生成音频:调用 piper 命令,通过
-m指定模型、-i指定清理后的输入文件、-f指定输出文件,并用--length-scale、--sentence-silence、--volume设置参数。字面文本可通过echo管道传入。 - 验证输出:检查输出文件存在且非空,可选使用 ffprobe 获取时长。
- 链接音频:按
![[The Converted Audio File.wav]]语法将音频与原始输入关联。
文档还提供了完整示例,包括 Markdown 转音频(默认设置)、文本转音频的一行命令,以及批量处理目录中所有 .md 文件的循环脚本。
语音模型
模型存放在 ~/piper-voices/,每个语音需要 .onnx 和 .onnx.json 两个文件。默认已安装 en_US-amy-medium(美式英语女声)。可从 https://huggingface.co/rhasspy/piper-voices 下载更多语音。添加语音的示例命令使用 curl 下载 lessac 语音的模型与配置文件,预览语音的地址为 https://rhasspy.github.io/piper-samples/。
错误处理
command not found: piper:piper 不在 PATH 中,可使用完整路径/Users/katiemulliken/.local/bin/piper。Model file not found:缺少 .onnx 文件,需确认语音存在于~/piper-voices/。Config file not found:缺少 .onnx.json,需下载匹配的配置文件。Input file not found:输入路径无效,需检查文件路径是否存在。
限制
资料未说明 Piper 技能的收费、价格、平台范围、具体效果评测或与其他 TTS 的对比。输入文件如为 Markdown 需依赖清理脚本,路径示例中使用了特定用户目录,实际使用需按本地环境调整。支持的语音语言范围以 rhasspy/piper-voices 仓库提供的模型为准,具体语音清单资料中未完整列出。