保存时间:2026/4/2 19:17:30
APP_IDTOKENCLUSTER(一般是:default)import websockets
import asyncio
import json
import pyaudio
import base64
# ========== 你自己改成火山控制台的信息 ==========
APP_ID = "你的APP_ID"
TOKEN = "你的TOKEN"
CLUSTER = "default"
# 音频参数(火山要求固定)
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
CHUNK = 1024
def build_header():
return {
"appid": APP_ID,
"token": TOKEN,
"cluster": CLUSTER,
"rate": RATE,
"format": "pcm",
"show_utterances": True,
}
async def asr_stream():
uri = "wss://openspeech.bytedance.com/api/v1/asr/stream"
headers = build_header()
p = pyaudio.PyAudio()
stream = p.open(
format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK
)
print("开始说话,实时转文字...(按 Ctrl+C 停止)")
async with websockets.connect(uri) as websocket:
# 先发送配置
await websocket.send(json.dumps(headers))
while True:
# 读麦克风音频
data = stream.read(CHUNK)
b64 = base64.b64encode(data).decode()
await websocket.send(json.dumps({"audio": b64}))
# 接收识别结果
resp = await websocket.recv()
j = json.loads(resp)
if "result" in j and j["result"]:
print("转文字:", j["result"])
if __name__ == "__main__":
asyncio.run(asr_stream())
pip install websockets pyaudio
转文字:你刚才说的内容sudo apt install portaudio19-dev python3-pyaudio
pip install websockets pyaudio
APP_ID/TOKENboosting_table_name参数说话 → 字节火山ASR(国内正常访问)→ 转成文字 → 你发给 Gemini(走科学上网)
说话 → 火山ASR(绕美国也能到)→ 文字 → 发给 Gemini(也走美国)
| 项目 | OpenClaw(小龙虾) | MuleRun(骡子快跑) |
|---|---|---|
| 运行位置 | 你本地/你自己的服务器 | MuleRun 专属云端虚拟机 |
| 安装 | 必须手动装、配环境、填 API Key | 浏览器打开即用,零安装 |
| API Key | 必须用户自己提供 | MuleRun 全包,用户不用管 |
| 硬件要求 | 本地要有足够显存/算力 | 对你本地硬件无要求 |
| 技术门槛 | 高,小白难搞定 | 0门槛,普通人直接用 |
| 维护 | 用户自己管更新、故障 | MuleRun 云端维护、一键修复 |
OpenClaw = 控制你本机浏览器,做你能手动做的一切(但麻烦、难装、要登录)MuleRun = 云端自己开环境,只做“纯API/纯网页公开任务”,碰不到你本机任何账号
想省事、不想装环境、不想登录、不怕能力有限 → 用 MuleRun想真·自动化自己账号、自己浏览器、自己业务 → 只能 OpenClaw 这种本机控制路线
用户以后只进一个 AI 平台所有功能都在里面被 AI 调度原来的 APP 只是 “后端服务”