emotion-analysis-server (Rust)
本地通话多模态情绪分析服务,基于纯 Rust 2021(Tokio + Axum 0.8 + ORT 动态加载)重构,对外契约及物理端口(9090)100% 兼容对齐。
支持 BERT 中英文文本情感分析与 Wav2Vec2 音频情绪识别,按 0.6:0.4 线性加权决策输出,提供录音提取预处理、静音裁剪与试听归档。
特性亮点
- 技术栈统一:纯 Rust 异步服务,彻底消除 C++ 裸指针、手写 Socket 与 MSVC/CMake 工具链依赖。
- 契约 100% 兼容:默认监听
9090,对外提供GET /health、POST /analyze、GET /emotion-audio/:fileName,下游apps/callout-server零配置修改无缝对接。 - 分词器精确还原:自研轻量级纯 Rust WordPiece 分词器,支持 CJK 单字切分、ASCII 小写、标点切分与贪心查表,切词特征与原有 BERT 模型完全一致。
- 多格式音频预处理管线:支持 8/16/24/32-bit PCM 与 IEEE float32 解码、
customer/agent/mix声道路由与严格多声道校验、16kHz 线性重采样、20ms 滑窗 RMS 静音裁剪、30s 截断与归一化。 - 动态免安装 ONNX Runtime:通过
ort动态库探测机制自动加载交付包或仓内预编译onnxruntime动态库,开箱即用。 - 工程与门禁规范:对齐平台标准,交付包自包含装配至
dist/win_x64/与dist/linux_x64/,支持bun run check:rust emotion单服务门禁与总门禁bun run check:rust。
目录结构
text
emotion-analysis-server/
├── src/ # WAV 解码、线性重采样、RMS 静音裁剪、PCM16 存储
├── config.toml # 默认运行时配置
├── scripts/ # 测试与联调客户端脚本
│ └── request-emotion.ts # 端到端测试与样本套件验证脚本
├── run-server.ts # 交付目录自包含启动脚本
├── build.ps1 / build.sh # Windows (PowerShell 7) / Linux 构建脚本
└── dist/ # 自包含交付目录 (win_x64 / linux_x64)构建
Windows x64 (PowerShell 7)
powershell
pwsh .\build.ps1脚本执行 cargo build --release,并将可执行文件 emotion_analysis_server.exe、onnxruntime.dll 及 config.toml 装配至 dist/win_x64/。
Linux x64
bash
./build.sh产物装配至 dist/linux_x64/。
运行与验证
启动服务
powershell
bun run run-server.ts或根目录下:
powershell
bun run dev:emotion运行测试套件
bash
# 运行全部单测(含文本与音频真实模型集成测试)
cargo test
# 静态门禁检查
cargo fmt --check
cargo clippy --all-targets -- -D warnings
# 服务运行中执行端到端多模态测试
bun scripts/request-emotion.ts