在人工智能的诸多应用中,语音识别(ASR)与语音合成(TTS)无疑是落地最广泛、与我们日常联系最紧密的技术之一。从早期的PocketSphinx到如今各类大模型,技术迭代日新月异。然而,对于许多企业和开发者而言,高昂的GPU计算成本是一道现实的门槛。幸运的是,随着模型优化与推理引擎的进步,在纯CPU环境下实现高效、可用的语音服务已成为可能。
Nway Audio_AI项目正是这一方向的实践,其核心目标在于:
- 极致性价比:无需NVIDIA显卡与CUDA环境,基于量化技术,利用现有服务器或低成本云主机CPU即可流畅运行,大幅降低部署与硬件成本。
- 可靠性能:底层采用优化的ONNX Runtime与Sherpa-ONNX引擎,结合优秀的Paraformer(ASR)与Vits(TTS)开源模型,在CPU上也能获得令人满意的识别速度与合成质量。
本文档将详细介绍如何在Debian 12系统上,从零开始部署并测试这套纯CPU的Nway ASR与TTS服务。
1. 准备工作与目录结构
首先,确保您已获取服务部署包(如NAsr_TTS_V2.6.zip),并将其解压至目标目录,例如 /home/user/nway_audio_ai/。完整的部署目录应包含以下核心文件与结构:
/home/user/nway_audio_ai/
├── config.ini # 服务配置文件(端口、模型参数等)
├── libonnxruntime.so # ONNX Runtime 依赖库
├── libsherpa-onnx-c-api.so # Sherpa ONNX 依赖库
├── nasr-server # ASR 服务端可执行程序
├── nasr-client # ASR 测试客户端
├── ntts-server # TTS 服务端可执行程序
├── ntts-client # TTS 测试客户端
├── models/ # 模型文件夹 (必须包含ASR和TTS模型文件)
└── Tts_samples/ # TTS服务对接的示例代码(如Golang)
若缺少关键的动态链接库(.so文件),程序将无法启动。
2. 环境准备与权限设置
在启动服务前,需要完成基础环境配置。
2.1 赋予执行权限
为所有可执行程序添加运行权限:
chmod +x nasr-server nasr-client ntts-server ntts-client
2.2 设置动态库路径
让系统能够找到当前目录下的依赖库,执行以下命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)
提示:您可以将此命令写入 ~/.bashrc 或启动脚本中,使其持久化。 Alternatively,也可将 .so 文件复制到 /usr/lib/ 目录下。
3. 启动服务端
服务端包含两个独立进程:ASR服务(语音转文字)和TTS服务(文字转语音)。
3.1 启动 ASR 服务
默认监听端口在 config.ini 中配置(通常为8089)。
./nasr-server
3.2 启动 TTS 服务
默认监听端口同样在 config.ini 中配置(通常为8090)。
./ntts-server
启动注意:启动时可能会看到关于 libnway_auth_lib.so 缺失或License初始化的警告。这是预期行为,可安全忽略,系统已设计为在缺少此高级授权库时自动降级,不影响核心的ASR与TTS功能。
4. 客户端测试
假设服务已在后台运行,我们使用配套的客户端进行功能测试。涉及服务端进程管理、网络调试等操作,可参考运维/DevOps相关知识。
4.1 测试 ASR (语音识别)
将本地的WAV音频文件发送至服务器进行识别。
4.2 测试 TTS (语音合成)
发送文本至服务器,接收并保存合成的音频文件。
提示:对于生产环境集成,建议参考 Tts_samples/ 目录下的示例代码,使用您擅长的后端编程语言(如Golang、Python等)自行实现客户端,以获得更好的可控性与性能。
5. 常见问题 (FAQ)
Q1: 运行程序时报错 error while loading shared libraries: libsherpa-onnx-c-api.so: cannot open shared object file
A1: 系统未找到动态库。请务必执行 2.2 步骤中的 export LD_LIBRARY_PATH 命令。
Q2: 控制台持续打印缺少 libnway_auth_lib.so 的警告,影响使用吗?
A2: 不影响。此为预期提示,基础ASR/TTS功能正常运行,可忽略该警告。
Q3: 如何修改服务监听的端口?
A3: 编辑项目根目录下的 config.ini 文件,找到 [server] 或相关的配置节点,修改 port 值,保存后重启对应服务即可生效。
Q4: 客户端无法连接到服务器 (Connection refused)
A4: 请按顺序排查:
- 检查进程:使用
ps -ef | grep server 确认 nasr-server 或 ntts-server 进程是否存在。
- 检查防火墙:确保服务器防火墙已放行
config.ini 中配置的端口(如8089, 8090)。
- 检查绑定地址:确认
config.ini 中的服务绑定地址(如 host)是否为 0.0.0.0(允许所有IP访问),而非仅 127.0.0.1(仅允许本机访问)。
- 检查IP白名单:查看配置中
allowed_ips 等选项,确认您的客户端IP地址是否被允许连接。
6. 资源下载
项目部署包可通过以下链接获取:
通过网盘分享的文件:NAsr_TTS_V2.6.zip
链接: https://pan.baidu.com/s/16Ze6qqIP9DhtT27seVWNCQ?pwd=62dw
提取码: 62dw
人工智能正在深刻改变人机交互的方式,而人工智能技术的平民化与低成本化,无疑是推动其广泛落地的重要一环。希望这套基于纯CPU的语音服务解决方案,能为您的项目开发或技术学习带来便利。
