套餐: 部署语音服务 {#default}
在 Jetson 设备上部署 GPU 加速的语音识别(ASR)和语音合成(TTS)服务。
| 设备 | 用途 |
|---|
| NVIDIA Jetson Orin NX 16GB | GPU 加速运行 ASR + TTS,支持双语言模式 |
部署完成后你可以:
- 实时流式语音识别
- 低延迟语音合成(支持多种音色)
- 两种语言模式:中文 + 英文(Matcha TTS + Paraformer ASR)或纯英文(Kokoro TTS + Zipformer ASR)
- 通过 HTTP + WebSocket API(端口 8621)调用
前提条件: Jetson 已安装 JetPack 6.x · 可通过 SSH 连接 · 需要联网拉取镜像(约 8GB)
步骤 1: 部署语音服务 {#speech_service type=docker_deploy required=true config=devices/docker_remote.yaml}
将语音识别和语音合成服务部署到你的 Jetson 设备。预构建镜像已包含所有依赖和模型,拉取后即可运行。
部署目标: 远程部署 {#speech_remote type=remote config=devices/docker_remote.yaml default=true}
通过 SSH 一键部署到 Jetson。
接线
- 将 Jetson 连接到网络
- 输入 Jetson 的 IP 地址和 SSH 凭据
- 点击 部署 — 系统会自动拉取预构建镜像并启动服务
部署完成
服务已在 http://<Jetson IP>:8621 运行。快速测试:
# 检查服务状态
curl http://<Jetson IP>:8621/health
# 预期返回: {"asr": true, "tts": true, "streaming_asr": true}
# 测试语音合成
curl -X POST http://<Jetson IP>:8621/tts \
-H "Content-Type: application/json" \
-d '{"text": "你好,我是你的语音助手。", "sid": 0}' \
--output test.wav
# 测试语音识别
curl -X POST http://<Jetson IP>:8621/asr \
-F "file=@test.wav"
故障排查
| 问题 | 解决方法 |
|---|
| SSH 连接失败 | 确认 IP 地址和凭据正确。先在电脑上试 ssh 用户名@IP |
| 镜像拉取慢 | 镜像压缩后约 8GB,确保 Jetson 网络稳定 |
| 服务未启动 | 查看日志:ssh 用户名@IP "cd jetson-voice && docker compose logs" |
| 健康检查失败 | 首次启动需约 40 秒预热模型,稍等后重试 |
| 内存不足 | 确保 Jetson 有 16GB 内存,且没有其他 GPU 任务在运行 |
部署目标: 本机部署 {#speech_local type=local config=devices/docker_local.yaml}
直接在当前机器上部署(需要 NVIDIA GPU)。
接线
- 确保已安装 Docker 和 NVIDIA Container Toolkit
- 点击 部署 开始安装
注意: 首次启动可能需要 10-15 分钟下载 Docker 镜像和初始化模型。
部署完成
服务已在 http://localhost:8621 运行。快速测试:
# 检查服务状态
curl http://localhost:8621/health
# 预期返回: {"asr": true, "tts": true, "streaming_asr": true}
# 测试语音合成
curl -X POST http://localhost:8621/tts \
-H "Content-Type: application/json" \
-d '{"text": "你好,我是你的语音助手。", "sid": 0}' \
--output test.wav
# 测试语音识别
curl -X POST http://localhost:8621/asr \
-F "file=@test.wav"
故障排查
| 问题 | 解决方法 |
|---|
| 未找到 NVIDIA 运行时 | 安装 NVIDIA Container Toolkit:sudo apt install nvidia-container-toolkit && sudo systemctl restart docker |
| 端口 8621 已被占用 | 停止占用 8621 端口的服务 |
| 容器不断重启 | 查看日志:docker logs jetson-voice-speech-1 |
| 健康检查失败 | 首次启动需约 40 秒预热模型,稍等后重试 |
步骤 2: 语音演示 {#voice_demo type=voice_demo required=false config=devices/voice_demo.yaml}
直接在此页面体验已部署的语音服务。输入 Jetson IP 地址,然后使用下方面板测试语音识别和语音合成。
语音识别(ASR)
按住 录音 按钮说话,语音将被实时识别,转录文字会即时显示在屏幕上。
文字转语音(TTS)
输入任意文字,点击 生成 即可听到语音播放,同时显示波形可视化。
故障排查
| 问题 | 解决方法 |
|---|
| 麦克风无法使用 | 浏览器弹出权限请求时请点击允许 |
| ASR 没有识别结果 | 确认服务正在运行:curl http://<IP>:8621/health |
| TTS 播放无声音 | 检查浏览器音量是否静音,尝试较短的文字 |
部署完成
恭喜!本地语音助手服务已运行。
快速验证
- 在浏览器打开
http://<Jetson IP>:8621/health — 所有字段应显示 true
- 用上面的
curl 命令测试语音合成
- 将你的应用连接到 API 接口
API 接口一览
| 接口 | 方法 | 说明 |
|---|
/health | GET | 服务健康检查 |
/asr/stream | WebSocket | 实时流式语音识别 |
/tts | POST | 文字转语音(返回 WAV) |
/tts/stream | POST | 流式文字转语音(返回原始 PCM) |
/asr | POST | 离线语音识别(上传 WAV 文件) |
后续步骤