输入示例
import asyncio
import json
import protocol
import argparse
async def main():
parser = argparse.ArgumentParser(description="ASR WebSocket Client")
parser.add_argument("--file", type=str,
default="<your_file_path>",
help="Audio file path")
parser.add_argument("--url", type=str, default="wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_nostream",
help="WebSocket URL")
parser.add_argument("--seg-duration", type=int, default=200,
help="Audio duration(ms) per packet, default:200")
parser.add_argument("--api_key", type=str, default="<your_api_key>",
help="API key for authorization (new console auth, X-Api-Key)")
parser.add_argument("--app_key", type=str, default="",
help="App key (legacy console auth, used with access_key)")
parser.add_argument("--access_key", type=str, default="",
help="Access key for authorization (legacy console auth, used with app_key)")
parser.add_argument("--resource_id", type=str, default="volc.seedasr.sauc.duration",
help="X-Api-Resource-Id")
args = parser.parse_args()
if not args.api_key and (not args.app_key or not args.access_key):
raise ValueError("auth required: provide --api_key, or --app_key + --access_key")
config = protocol.Config(
api_key=args.api_key,
app_key=args.app_key,
access_key=args.access_key,
resource_id=args.resource_id,
)
payload = {
"audio": {
"format": "wav",
"codec": "raw",
"rate": 16000,
"bits": 16,
"channel": 1
},
"request": {
"model_name": "bigmodel",
"enable_itn": True,
"enable_punc": True,
"enable_ddc": True,
"show_utterances": True
}
}
async with protocol.AsrWsClient(args.url, args.seg_duration) as client: # 使用async with
try:
async for response in client.execute(args.file,config,payload):
protocol.logger.info(f"Received response: {json.dumps(response.to_dict(), indent=2, ensure_ascii=False)}")
except Exception as e:
protocol.logger.error(f"ASR processing failed: {e}")
if __name__ == "__main__":
asyncio.run(main())输出示例
{
"code": 0,
"event": 0,
"is_last_package": true,
"payload_sequence": 42,
"payload_size": 2631,
"payload_msg": {
"audio_info": {
"duration": 8040
},
"result": {
"additions": {
"log_id": "20260810152426979947089E61DF8235A3"
},
"text": "您好,我是您的 AI 助手。",
"utterances": [
{
"additions": {
"fixed_prefix_result": "",
"source": "stream",
"speaker_id": "0"
},
"definite": true,
"end_time": 2000,
"start_time": 280,
"text": "您好,我是您的 AI 助手。",
"words": [
{ "end_time": 360, "start_time": 280, "text": "您" },
{ "end_time": 680, "start_time": 360, "text": "好" },
{ "end_time": 880, "start_time": 680, "text": "我" },
{ "end_time": 1040, "start_time": 880, "text": "是" },
{ "end_time": 1160, "start_time": 1040, "text": "您" },
{ "end_time": 1320, "start_time": 1160, "text": "的" },
{ "end_time": 1520, "start_time": 1360, "text": "AI" },
{ "end_time": 1800, "start_time": 1600, "text": "助" },
{ "end_time": 2000, "start_time": 1800, "text": "手" }
]
}
]
}
}
}