ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

GLM-Claw 开袋即食:智谱AI新品如何用 Agent 串起 TTS 与 ASR

2026/10/4 20:03:07 拓冰建站 浏览量
GLM-Claw 开袋即食:智谱AI新品如何用 Agent 串起 TTS 与 ASR 1. GLM-Claw 语音 Agent 到底能做什么适合谁上手GLM-Claw 是智谱AI 推出的 Agent 产品最让我意外的不是它的搜索或文档能力而是它把 TTS文本转语音和 ASR语音转文本直接内置到了 Agent 的默认能力里。你可能在其他 Agent 平台上折腾过语音功能通常要额外装 skill、配 API Key、调参数一通操作下来半小时没了。GLM-Claw 的做法是开箱就能说、就能听不需要你单独去接语音服务。这意味着什么你可以用语音给它下指令它转写成文本后执行任务执行完再用语音把结果读给你听。整个链路是闭环的。适合谁呢移动端用户、想快速验证语音 Agent 可行性的开发者、以及需要把语音交互嵌入自己工作流但不想从零搭 TTS/ASR 的人。但这里有个关键问题GLM-Claw 在智谱清言 APP 里是限时体验额度有限而且任务执行过程不可见失败了只能重试。如果你想把语音 Agent 能力真正落到自己的项目里还是得走 API 这条路。我实测下来用 TaoToken 作为统一接入层来调 GLM 系列模型和语音接口比在 APP 里等额度靠谱得多。下面我会把两条路都讲清楚先讲 GLM-Claw 的开箱体验和语音链路再讲怎么用 API 把同样的 TTSASR 能力接进你自己的 Agent 配置里。核心检索词先摆出来GLM-Claw 是智谱AI 的 Agent 新品TTS 和 ASR 是它内置的语音能力Agent 是它的运行形态。你要做的是把这三者串起来跑通从语音输入到语音输出的完整流程。2. TaoToken 前置准备拿 Key、选模型、配 Base URL在动手写配置之前先把接入层准备好。TaoToken 的官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。注意 API 地址后面不加 UTM 参数直接用它作为 Base URL。第一步注册并登录后进控制台。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。在里面你可以看到自己的额度、调用记录和模型列表。第二步创建 API Key。入口在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。点创建复制那串 sk- 开头的 Key存到安全的地方。这个 Key 就是你后面所有配置里的核心凭证。第三步确认你要用的模型 ID。GLM 系列在 TaoToken 上的模型 ID 通常是 glm-4-plus、glm-4-air 这类。语音相关的 TTS 和 ASR 接口你需要看文档里对应的 endpoint。文档地址是 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。我建议你先在模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 里试一下 glm-4-plus 能不能正常回话确认 Key 和 Base URL 没问题。如果你打算长期跑编码类 Agent 或者需要稳定的语音链路可以看一下 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它适合需要持续调用、不想每次手动充值的场景。这里有个坑要注意TaoToken 的 Base URL 是 https://taotoken.net/api 不是 https://taotoken.net/api/v1 。有些 SDK 会自动拼 /v1有些不会。你在配置的时候要看清楚文档里写的完整路径。我试过在 OpenAI SDK 里把 base_url 设成 https://taotoken.net/api 然后模型名写 glm-4-plus请求能正常发出去。另外如果你用的是 Claude Code 或者类似的编码 AgentTaoToken 也提供了对应的接入方式。ClaudeCodeAnthropic 的配置入口在 https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite 。这个后面讲 Agent 配置的时候会用到。3. 可复制配置Agent 接入 TTS 与 ASR 的完整片段这一节是核心。我会给出三种配置形态JSON 格式的 Agent 配置文件、TOML 格式的 settings、以及 Python 代码里的调用片段。你可以根据自己的技术栈选一个直接复制。先讲 JSON 配置。假设你在用一个支持自定义模型端点的 Agent 框架配置文件通常长这样{ agent: { name: glm-claw-voice, model: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key: sk-你的Key, model_id: glm-4-plus }, tts: { enabled: true, endpoint: https://taotoken.net/api/audio/speech, voice: zh-CN-female-01, format: mp3 }, asr: { enabled: true, endpoint: https://taotoken.net/api/audio/transcriptions, language: zh, format: wav } } }注意这里的 base_url 写的是 https://taotoken.net/api 没有多余的斜杠。api_key 换成你在 api-keys 页面拿到的那个。model_id 先用 glm-4-plus如果你要更快的响应可以换 glm-4-air。如果你用的是 TOML 格式的 settings比如某些 CLI 工具或者本地 Agent 框架配置片段如下[model] provider openai base_url https://taotoken.net/api api_key sk-你的Key model_id glm-4-plus [tts] enabled true endpoint https://taotoken.net/api/audio/speech voice zh-CN-female-01 response_format mp3 [asr] enabled true endpoint https://taotoken.net/api/audio/transcriptions language zhTOML 里字符串要用双引号布尔值小写。这个配置可以直接放进你的 settings.toml 或者 config.toml 里。如果你是在 Python 代码里直接调用 OpenAI SDK 的写法from openai import OpenAI client OpenAI( base_urlhttps://taotoken.net/api, api_keysk-你的Key ) # 文本对话 response client.chat.completions.create( modelglm-4-plus, messages[{role: user, content: 你好请用一句话介绍你自己}] ) print(response.choices[0].message.content) # TTS 语音合成 speech client.audio.speech.create( modeltts-1, voicezh-CN-female-01, input你好我是 GLM-Claw 语音助手 ) speech.stream_to_file(output.mp3) # ASR 语音转写 with open(input.wav, rb) as f: transcript client.audio.transcriptions.create( modelwhisper-1, filef, languagezh ) print(transcript.text)这里要注意TTS 和 ASR 的 model 参数可能和对话模型不同。文档里如果写的是 tts-1 和 whisper-1就按文档来。如果 TaoToken 的文档里写的是别的模型 ID以文档为准。我实测下来对话用 glm-4-plusTTS 和 ASR 用文档里指定的语音模型 ID链路是通的。还有一个关键点如果你用的是 Claude Code 或者 Cline 这类工具配置方式不一样。Claude Code 需要在 settings 里指定 Anthropic 兼容的 Base URL。TaoToken 的 ClaudeCodeAnthropic 页面有详细说明。Cline 的 MCP 配置里你需要把 Base URL 写成 https://taotoken.net/api Key 填进去Model ID 写 glm-4-plus。这三件套缺一不可。4. 验证请求从语音输入到语音输出的完整跑通配置写好了接下来验证。我按顺序走一遍先验证文本对话再验证 TTS再验证 ASR最后串起来。第一步验证文本对话。用 curl 发一个最简单的请求curl https://taotoken.net/api/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的Key \ -d { model: glm-4-plus, messages: [{role: user, content: 回复一个字好}] }如果返回的 JSON 里 choices[0].message.content 是“好”说明 Key 和 Base URL 没问题。如果返回 401说明 Key 错了或者没带上。如果返回 404说明路径不对检查是不是多写了 /v1。第二步验证 TTS。用 Python 跑上面那段 speech.create 的代码生成一个 output.mp3。播放一下能听到声音就说明 TTS 通了。如果报错说 model not found去文档里确认 TTS 的模型 ID 到底是什么。第三步验证 ASR。录一段 3 秒的 wav 文件用 transcriptions.create 转写。打印出来的 text 如果和你说的内容一致ASR 就通了。第四步串起来。写一个简单的循环import sounddevice as sd import numpy as np from scipy.io.wavfile import write from openai import OpenAI client OpenAI(base_urlhttps://taotoken.net/api, api_keysk-你的Key) # 录音 3 秒 fs 16000 duration 3 recording sd.rec(int(duration * fs), sampleratefs, channels1, dtypeint16) sd.wait() write(input.wav, fs, recording) # ASR 转写 with open(input.wav, rb) as f: transcript client.audio.transcriptions.create(modelwhisper-1, filef, languagezh) user_text transcript.text print(你说, user_text) # 对话 response client.chat.completions.create( modelglm-4-plus, messages[{role: user, content: user_text}] ) reply_text response.choices[0].message.content print(Agent 回复, reply_text) # TTS 合成 speech client.audio.speech.create(modeltts-1, voicezh-CN-female-01, inputreply_text) speech.stream_to_file(reply.mp3) print(语音已生成reply.mp3)跑完这个脚本你会看到你说的话被转写成文本Agent 回复了文本然后文本被合成语音存成 mp3。这就是从语音输入到语音输出的完整链路。我实测下来整个流程在 5 秒内能跑完3 秒录音 1 秒转写 1 秒对话 1 秒合成。如果你觉得慢可以把 glm-4-plus 换成 glm-4-air响应会快一些。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节列几个我踩过的坑和对应的解法。401 Unauthorized。最常见的原因是 Key 没填对或者 Authorization header 格式错了。检查你的 Key 是不是 sk- 开头有没有多余空格。如果是用 SDK确认 api_key 参数传进去了。还有一种情况你用的是 TaoToken 的 Key但 Base URL 写成了别的地址两边不匹配也会 401。local proxy failed。这个报错通常出现在你本地开了代理工具的时候。TaoToken 的 API 地址是 https://taotoken.net/api 如果你本地有代理规则把 taotoken.net 也代理了可能会失败。解法是检查你的代理规则把 taotoken.net 加入直连列表。或者临时关掉代理再试。reading choices 报错。这个通常是因为返回的 JSON 结构和你代码里取值的路径不一致。比如你代码里写的是 response.choices[0].message.content但实际返回的字段名不一样。先用 print(response) 把完整响应打出来看看结构再取值。另外如果模型返回的是流式响应choices 可能不在第一层需要遍历。OAuth 相关报错。如果你用的是 Claude Code 或者需要 OAuth 认证的工具报错说 token 无效或者认证失败检查你是不是把 API Key 填到了 OAuth 的位置。TaoToken 的接入用的是 API Key不是 OAuth。Claude Code 的配置里Base URL 写 https://taotoken.net/api Key 填 sk- 开头的那个Model ID 写 glm-4-plus。这三件套对齐了OAuth 报错就不会出现。还有一个容易忽略的如果你在 Cline 的 MCP 配置里接 TaoTokenMCP server 的启动参数里要带上 Base URL 和 Key。Cline 的配置文件通常是 JSON里面 mcpServers 下面加一个条目command 写你的启动命令env 里放 TAOTOKEN_BASE_URL 和 TAOTOKEN_API_KEY。具体写法参考文档里的 MCP 接入示例。最后如果你在 Codex 的 auth.json 里配置格式是这样的{ openai: { api_key: sk-你的Key, base_url: https://taotoken.net/api } }auth.json 的路径通常在 ~/.codex/auth.json 或者项目根目录下的 .codex/auth.json。改完之后重启 Codex 生效。6. 把语音 Agent 接进你的工作流下一步做什么跑通上面的链路之后你可以做几件事。第一把 TTS 的输出接到你的消息通知里比如任务完成后自动播报。第二把 ASR 接到你的语音输入场景比如开车时用语音给 Agent 下指令。第三如果你要长期跑编码类 Agent用 Coding Plan 的额度更划算入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。如果你只是想先试试模型对话的效果直接去 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 里输入文字看看 glm-4-plus 的回复质量。确认没问题了再按上面的配置接进你的 Agent。文档里还有更多语音参数的说明比如语速、音色、采样率。你可以根据场景调。比如做客服播报语速调慢一点做通知提醒语速正常就行。ASR 那边如果环境噪音大可以在前端加一个降噪预处理转写准确率会高很多。我自己的做法是把 TTS 和 ASR 封装成两个函数Agent 主循环里调用。这样换模型或者换语音服务的时候只改函数内部不影响主流程。你可以参考这个思路把上面的代码片段整理成自己的工具模块。