找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1464

积分

0

好友

216

主题
发表于 3 天前 | 查看: 8| 回复: 0

在人工智能的诸多应用中,语音识别(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音频文件发送至服务器进行识别。

  • 命令格式
    ./nasr-client <服务器IP:端口> <WAV文件路径>
  • 示例
    ./nasr-client 127.0.0.1:8089 test_audio.wav
  • 预期输出:直接输出识别后的文本结果。

4.2 测试 TTS (语音合成)
发送文本至服务器,接收并保存合成的音频文件。

  • 命令格式
    ./ntts-client <服务器IP:端口> --input “<待合成文本>” --output <保存文件名>
  • 示例
    ./ntts-client 127.0.0.1:8090 --input “你好,欢迎测试语音合成服务。” --output output.wav
  • 预期输出:客户端显示连接与接收数据的过程,最终在当前目录生成 output.wav 文件。

提示:对于生产环境集成,建议参考 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: 请按顺序排查:

  1. 检查进程:使用 ps -ef | grep server 确认 nasr-serverntts-server 进程是否存在。
  2. 检查防火墙:确保服务器防火墙已放行 config.ini 中配置的端口(如8089, 8090)。
  3. 检查绑定地址:确认 config.ini 中的服务绑定地址(如 host)是否为 0.0.0.0(允许所有IP访问),而非仅 127.0.0.1(仅允许本机访问)。
  4. 检查IP白名单:查看配置中 allowed_ips 等选项,确认您的客户端IP地址是否被允许连接。

6. 资源下载

项目部署包可通过以下链接获取:

通过网盘分享的文件:NAsr_TTS_V2.6.zip
链接: https://pan.baidu.com/s/16Ze6qqIP9DhtT27seVWNCQ?pwd=62dw
提取码: 62dw

人工智能正在深刻改变人机交互的方式,而人工智能技术的平民化与低成本化,无疑是推动其广泛落地的重要一环。希望这套基于纯CPU的语音服务解决方案,能为您的项目开发或技术学习带来便利。

技术演进




上一篇:POSIX线程实时调度核心机制:SCHED_FIFO与SCHED_RR策略详解
下一篇:多智能体架构构建指南:遵循共享上下文与决策统一原则
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 20:53 , Processed in 0.273122 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表