mcpField
S
speech

speech

github.com/drawcall-ai创意与媒体0111 次安装7 周前更新
代码仓库

关于 speech

Drawcall Speech 将文本转换为可播放的音频,适合为应用添加语音内容的开发者。它将声音选择与可选的表达指导分开,并缓存重复请求。

主要功能

  1. 01生成文本转音频 URL
  2. 02选择具名声音
  3. 03可选表达风格指导
  4. 04文本内嵌表演指示
  5. 05缓存重复请求

适用场景

  1. 01为游戏添加 NPC 对话
  2. 02制作旁白或教程语音
  3. 03提供无障碍朗读
  4. 04播放 UI 语音提示

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/drawcall-ai/speech --skill speech

安装后在 Claude Code 中输入/speech确认已加载。

详细介绍

语音

使用 Drawcall Speech 生成语音输出:NPC 对话、旁白、教程语音、无障碍朗读和 UI 语音。它会将文本转换为音频片段 URL,供应用加载和播放。

端点

Drawcall Speech 会将文本转换为音频 URL。

GET https://v1.speech.drawcall.ai/?text=Hello+world&voice=Zephyr
  • text:必填,URL 编码、去除首尾空格,最多 1000 个字符。
  • style:可选,URL 编码、去除首尾空格,最多 1000 个字符。可用于指定语气、情绪、口音、语速和停顿等演绎要求。
  • voice:可选,默认为 Zephyr。
  • 未知的 voice 名称也会回退到 Zephyr;请将角色定位和演绎说明放在 style 中。
  • 响应:音频文件,通常为 audio/wav。
  • 缓存:生成的片段会按文本、style 和 voice 缓存;重复播放时请复用相同的 URL。
  • 错误:输入无效时返回纯文本 400,生成失败时返回 502。

风格

普通台词使用 text 和 voice。只有整句或整个片段需要整体演绎指导时,才添加 style。这符合常见的 TTS 划分方式:转录文本与语音选择分开,演绎控制则是可选的。style 是 Drawcall Speech 对自然语言演绎说明的公开名称;它是一个便捷名称,并非通用的 TTS 标准,但与 Gemini 风格提示词和 Azure 风格的 SSML 命名相适配,且不会暴露模型提示词机制。

将要说出的内容放在 text 中;如果整句需要指定语气、情绪、口音、语速或停顿,则将整句演绎说明放在 style 中。如果控制要求仅适用于特定词语或节拍,在 text 中加入行内舞台指示通常就足够了,无需单独设置 style。Style 只能尽力实现,无法达到采样级的精准定时;如需精准定时,请预先生成并编辑音频素材。

合适的 style 值:

  • 用温暖而兴奋的语气说,第一句后停顿较长。
  • 用缓慢的诡异耳语读出这段内容,并在接近结尾时紧张地笑一声。
  • 使用平静的英式旁白语气,并在分句之间短暂停顿。

对于特定位置的局部变化,在 text 中加入行内舞台指示效果更好。使用方括号标注指示,例如 [pause]、[long pause]、[whispers]、[shouting]、[happy]、[sad]、[laughs] 或 [very slow]。服务会要求模型将方括号中的指示视为表演说明,而非朗读内容,但效果仍取决于模型。整体演绎要求放在 style 中;定时或局部变化放在 text 中。

GET https://v1.speech.drawcall.ai/?text=Hello+from+Drawcall.+Now+we+continue.&voice=Puck&style=Say+warmly+and+excitedly,+with+a+long+dramatic+pause+after+the+first+sentence.
GET https://v1.speech.drawcall.ai/?text=[whispers]+I+found+it.+[long+pause]+[shouting]+Run+now!&voice=Puck&style=Start+tense,+then+turn+urgent.

首次请求延迟

首次请求特定的 text、style 和 voice 组合时,端点必须先生成片段才能提供服务。如果测试要求即时播放、动画同步或确定的时序,这段短暂延迟可能会导致应用内行为异常。

如果这点很重要,请在测试前为缓存预热:针对每条所需台词及其 style 和 voice 调用一次端点。之后,对相同 URL 的请求会命中缓存,理应可以即时响应。

如需更严格的控制,可下载并在本地存储音频文件,然后由应用提供服务。折中的做法是编写一个小型语音脚本,预先下载每条台词,同时将语音台词文本保存在同一个源文件中;这样修改台词只需改动一处源文件。

示例

HTML 音频:

<audio
  controls
  src="https://v1.speech.drawcall.ai/?text=Welcome+to+Drawcall&voice=Zephyr"
></audio>

Three.js 空间音频:

import * as THREE from "three";

const listener = new THREE.AudioListener();
camera.add(listener);

const speaker = new THREE.Object3D();
speaker.position.set(2, 1.5, -3);
scene.add(speaker);

const audio = new THREE.PositionalAudio(listener);
audio.setRefDistance(2);
audio.setRolloffFactor(1.5);
speaker.add(audio);

const text = encodeURIComponent("I am speaking from over here.");
const voice = encodeURIComponent("Puck");
new THREE.AudioLoader().load(
  `https://v1.speech.drawcall.ai/?text=${text}&voice=${voice}`,
  (buffer) => {
    audio.setBuffer(buffer);
    audio.setVolume(1);
    audio.play();
  },
);

语音

已知语音包括 Zephyr、Puck、Charon、Kore、Fenrir、Leda、Orus、Aoede、Callirrhoe、Autonoe、Enceladus、Iapetus、Umbriel、Algieba、Despina、Erinome、Algenib、Rasalgethi、Laomedeia、Achernar、Alnilam、Schedar、Gacrux、Pulcherrima、Achird、Zubenelgenubi、Vindemiatrix、Sadachbia、Sadaltager 和 Sulafat。

浏览器通常要求用户先点击或轻触,才能播放音频。在 UI 中,请从用户手势触发播放;如有需要,请先恢复音频上下文。

评论

支持 Markdown