9 个稳定版本
2.2.1 | 2022年11月12日 |
---|---|
2.1.0 | 2022年10月25日 |
1.6.1 | 2022年10月10日 |
#1581 在 命令行工具
每月下载 27 次
52KB
1K SLoC
WACR
WACR 是 WebRTC -> VK ASR(语音识别技术)交互的后端。
工作原理
客户端通过 WebRTC 技术调用 WACR 后端。之后,WACR 将 WebRTC 的音频流保存到文件系统中。保存的音频流将通过 API 发送到 VK ACR 后端。然后,WACR 将内存中的识别文本保存并发送给客户端。
用法
从 Cargo 安装并运行二进制文件
cargo install wacr
RUST_LOG=debug;VK_API_SERVICE_TOKEN=XXX;VK_API_SERVICE_KEY=YYY wacr
使用 Cargo 编译和运行
RUST_LOG=debug;VK_API_SERVICE_TOKEN=XXX;VK_API_SERVICE_KEY=YYY cargo run --package wacr --bin wacr
使用 Cargo 编译并运行二进制文件
cargo build --package wacr --bin wacr --release
RUST_LOG=debug;VK_API_SERVICE_TOKEN=XXX;VK_API_SERVICE_KEY=YYY ./target/release/wacr
API
获取 JWT 令牌。
查询必须从 小程序启动参数 中提取
请求
POST http://127.0.0.1:8080/token/generate
Content-Type: application/json
{
"query": "XXX"
}
响应
{
"token": "xxx",
"expiration": 1664718489
}
创建会话
通过 WebRTC 创建连接。必须从获取 JWT 令牌 API 获取 access_token。Offer 是客户端 本地 WebRTC Offer。
请求
POST http://127.0.0.1:8080/session/create?access_token=XXX
Content-Type: application/json
{
"offer": {}
}
响应
{
"session_id": "a3b26e68-7fda-4534-bbdd-92a98230a824",
"offer": {}
}
识别语音
从创建会话开始识别接收到的语音。必须从获取 JWT 令牌 API 获取 access_token。
请求
POST http://127.0.0.1:8080/session/asr?access_token=XXX
Content-Type: application/json
{
"session_id": "a3b26e68-7fda-4534-bbdd-92a98230a824"
}
响应
{
"text": "Hello world!"
}
监听录制的音频
GET http://127.0.0.1:8080/session/listen/{session_id}?access_token=XXX
可能的错误
基本错误响应
{
"error": "error occurred"
}
启动环境
必需
VK_API_SERVICE_TOKEN=XXX # Service token for requesting VK API endpoints
VK_API_SERVICE_KEY=YYY # Service key for validating query on token generation
可选
LISTEN_ADDRESS=127.0.0.1:8080 # Listening address
JWT_EXPIRATION=3600 # How many seconds access token will valid
GARBAGE_COLLECTOR_TTL=3600 # How many seconds audio files and text results will alive
SESSION_KEEP_ALIVE_TIMEOUT=10 # How many seconds webrtc session will alive without incoming packets
SESSION_TOTAL_TIMEOUT=100 # Max number of seconds webrtc session will alive
AUDIO_DIR=/tmp # The directory where audio files saving
WEBRTC_PORT_MIN=0 # Minimal available port for webrtc peer connections
WEBRTC_PORT_MAX=0 # Maximal available port for webrtc peer connections
WEBRTC_INTERFACES_ALLOWED= # All interfaces allowed by default. List of allowed network interfaces split by ,
STATIC_DIR= # If set, service will distribute all static from this directory by path /static. Example: /static/index.html
依赖关系
~44–60MB
~1M SLoC