Add your description here
Project description
WASR Client
一个用于语音识别(ASR)的Python客户端,支持通过gRPC协议与Seldon Core服务进行通信。
功能特性
- 🔊 语音识别:支持音频URL和base64编码的音频数据
- 🚀 高性能:基于gRPC协议的异步通信
- 📦 批量处理:支持批量语音识别请求
- 🎯 热词支持:可配置热词以提高识别准确率
- 🔧 环境切换:支持测试环境和生产环境
安装
使用uv(推荐)
# 克隆项目
git clone <repository-url>
cd wasr-client
# 安装依赖
uv sync
# 激活环境
source .venv/bin/activate
使用pip
pip install wasr-client
快速开始
基本使用
from wasr_client import ASRClient
# 创建客户端实例(生产环境)
client = ASRClient(task_id="your_task_id", env="ol")
# 使用音频URL进行识别
result = client.predict(
url="http://example.com/audio.mp3",
mono=True # 单声道音频
)
print(result)
测试环境
# 测试环境
client = ASRClient(task_id="your_task_id", env="test")
API 文档
ASRClient 类
初始化参数
task_id(str): 任务ID,必填env(str): 环境选择,可选值为 "test" 或 "ol",默认为 "ol"
方法
predict()
对单个音频进行语音识别。
参数:
url(str, optional): 音频文件的URL地址b64_str(str, optional): base64编码的音频数据mono(bool, optional): 是否为单声道音频hotwords(str, optional): 热词,用逗号分隔
返回值: str - 识别结果文本
注意: url 和 b64_str 至少提供一个
示例:
# 使用URL
result = client.predict(url="http://example.com/audio.mp3")
# 使用base64字符串
result = client.predict(b64_str="UklGRiQAAABXQVZFZm10...")
# 使用热词
result = client.predict(
url="http://example.com/audio.mp3",
hotwords="你好,谢谢,再见"
)
# 单声道音频
result = client.predict(
url="http://example.com/audio.mp3",
mono=True
)
batch_predict()
批量处理多个音频识别请求。
参数:
inputs(list[dict]): 音频输入列表,每个字典包含单个音频的参数
返回值: list[str] - 识别结果列表
示例:
inputs = [
{"url": "http://example.com/audio1.mp3", "mono": True},
{"url": "http://example.com/audio2.mp3", "hotwords": "关键词"},
{"b64_str": "UklGRiQAAABXQVZFZm10...", "mono": False}
]
results = client.batch_predict(inputs)
for result in results:
print(result)
配置说明
环境配置
- test: 测试环境,用于开发和测试
- ol: 生产环境(online),用于正式使用
网络配置
客户端会自动连接到对应的环境地址:
- 测试环境:
test-lbg-huangye.wpai.58dns.org:8866 - 生产环境:
ol-lbg-huangye.wpai.58dns.org:8866
错误处理
客户端会在以下情况抛出异常:
- 参数错误:
url和b64_str都为空时 - 网络错误: 无法连接到服务时
- 超时错误: 请求超过1000秒超时时间
建议使用try-except块处理异常:
try:
result = client.predict(url="http://example.com/audio.mp3")
print(f"识别结果: {result}")
except Exception as e:
print(f"识别失败: {e}")
音频格式支持
- 支持的URL: HTTP/HTTPS链接的音频文件
- 支持的编码: base64字符串(通常用于二进制音频数据)
- 音频格式: 建议使用MP3、WAV等常见格式
- 声道: 支持单声道(mono=True)和立体声(mono=False)
命令行使用
项目提供命令行脚本(需要配置脚本入口):
# 直接运行(如果已配置)
wasr-client --task-id your_task_id --env ol --url http://example.com/audio.mp3
依赖项
- grpcio >= 1.76.0
- grpc-interceptor >= 0.15.4
- seldon-core >= 1.18.2
开发
代码格式化
项目使用ruff进行代码格式化和检查:
# 格式化代码
ruff format .
# 检查代码
ruff check .
测试
运行测试文件:
# 在Jupyter notebook中运行
# test.ipynb 包含基本使用示例
注意事项
- Task ID: 每个任务都需要有效的task_id,请从管理员处获取
- 网络连接: 确保能够访问58DNS域名解析服务
- 音频质量: 高质量音频能获得更好的识别效果
- 并发限制: 建议控制并发请求数量,避免服务过载
- 超时时间: 默认超时1000秒,根据音频长度适当调整
许可证
[请添加许可证信息]
贡献
欢迎提交Issue和Pull Request!
联系方式
[请添加联系方式]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wasr_client-0.1.0.tar.gz.
File metadata
- Download URL: wasr_client-0.1.0.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
057461acc64d74e848913b93f208a1f9cfd6da540f0cef44b398577feac99d4c
|
|
| MD5 |
4f5bb8581d35375dedbd5a43f3281a29
|
|
| BLAKE2b-256 |
454c01bf04e8804dbb9b88c6d09bf315a25b90836d4d196c7d526d976542fd23
|
File details
Details for the file wasr_client-0.1.0-py3-none-any.whl.
File metadata
- Download URL: wasr_client-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed049b1dd95f86cf0469219464da74de2521d07cb8909be15a7c0c3e1ff0fa94
|
|
| MD5 |
1a027c9e68adc9fd537f4ddbedb2505f
|
|
| BLAKE2b-256 |
7d049684b22eedb95c89868c749dac9f1ee614e64604db3268696161f869c46f
|