Skip to main content

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

错误处理

客户端会在以下情况抛出异常:

  1. 参数错误: url 和 b64_str 都为空时
  2. 网络错误: 无法连接到服务时
  3. 超时错误: 请求超过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 包含基本使用示例

注意事项

  1. Task ID: 每个任务都需要有效的task_id,请从管理员处获取
  2. 网络连接: 确保能够访问58DNS域名解析服务
  3. 音频质量: 高质量音频能获得更好的识别效果
  4. 并发限制: 建议控制并发请求数量,避免服务过载
  5. 超时时间: 默认超时1000秒,根据音频长度适当调整

许可证

[请添加许可证信息]

贡献

欢迎提交Issue和Pull Request!

联系方式

[请添加联系方式]

Metadata

Release files for wasr-client 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wasr-client 0.1.0
File Size Uploaded
wasr_client-0.1.0.tar.gz 4.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wasr-client 0.1.0
File Interpreter ABI Platform
wasr_client-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.5 kB

Release files / wasr_client-0.1.0.tar.gz

Download URL wasr_client-0.1.0.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
057461acc64d74e848913b93f208a1f9cfd6da540f0cef44b398577feac99d4c
BLAKE2b-256 checksum
How to use checksums
454c01bf04e8804dbb9b88c6d09bf315a25b90836d4d196c7d526d976542fd23
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / wasr_client-0.1.0-py3-none-any.whl

Download URL wasr_client-0.1.0-py3-none-any.whl
Size 5.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed049b1dd95f86cf0469219464da74de2521d07cb8909be15a7c0c3e1ff0fa94
BLAKE2b-256 checksum
How to use checksums
7d049684b22eedb95c89868c749dac9f1ee614e64604db3268696161f869c46f
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page