Qwen3-ASR-1.7B部署教程:7861 API接口文档说明与curl/python调用示例

张开发
2026/4/14 21:46:33 15 分钟阅读

分享文章

Qwen3-ASR-1.7B部署教程:7861 API接口文档说明与curl/python调用示例
Qwen3-ASR-1.7B部署教程7861 API接口文档说明与curl/python调用示例1. 快速了解Qwen3-ASR-1.7B语音识别模型Qwen3-ASR-1.7B是阿里通义千问推出的端到端语音识别模型拥有17亿参数支持中文、英文、日语、韩语、粤语等多语种识别还能自动检测语言类型。这个模型基于qwen-asr框架采用双服务架构设计包含FastAPI后端和Gradio前端在完全离线环境下就能实现实时转写识别速度很快实时因子RTF小于0.3。模型单卡显存占用约10-14GB最大的优点是无需依赖外部语言模型真正做到即开即用。无论是会议转写、多语言内容审核还是私有化语音交互平台部署这个模型都能很好地胜任。镜像基本信息镜像名称ins-asr-1.7b-v1适用底座insbase-cuda124-pt250-dual-v7启动命令bash /root/start_asr_1.7b.sh访问端口7860WebUI界面、7861API接口2. 环境准备与快速部署2.1 部署步骤部署Qwen3-ASR-1.7B模型非常简单只需要几个步骤在平台镜像市场中选择ins-asr-1.7b-v1镜像点击部署按钮等待实例创建完成实例状态变为已启动后系统需要1-2分钟进行初始化首次启动时模型需要15-20秒将5.5GB参数加载到显存中2.2 验证部署成功部署完成后你可以通过两种方式访问服务方式一Web界面测试在实例列表中找到部署的实例点击HTTP入口按钮或者直接在浏览器访问http://实例IP:7860这会打开Gradio提供的语音识别测试页面方式二API接口测试API服务运行在7861端口可以通过curl命令或Python代码直接调用接口后续章节会详细介绍API的使用方法3. 7861 API接口详细文档3.1 接口基本信息7861端口提供的是RESTful API接口基于FastAPI框架构建支持程序化调用。这个接口是语音识别服务的核心所有识别请求都通过这个接口处理。接口地址http://实例IP:7861/asr请求方法POSTContent-Typemultipart/form-data3.2 请求参数说明接口接收两个主要参数参数名类型必选说明可选值audio_filefile是音频文件WAV格式文件languagestring否识别语言zh,en,ja,ko,yue,auto参数详细说明audio_file参数必须是WAV格式的音频文件支持单声道或立体声系统会自动转换为单声道自动重采样到16kHz采样率建议音频时长在5分钟以内language参数zh中文识别普通话en英文识别ja日语识别ko韩语识别yue粤语识别auto自动语言检测默认值3.3 响应格式说明接口返回JSON格式的数据包含识别结果和相关信息{ status: success, language: Chinese, text: 识别出的文字内容, processing_time: 2.34 }响应字段说明status请求状态成功为success失败为errorlanguage识别出的语言类型英文名称text识别出的文字内容processing_time处理耗时秒error仅失败时错误信息描述3.4 错误码说明当接口调用出现问题时会返回相应的错误信息错误码说明可能原因400Bad Request请求参数错误或缺失415Unsupported Media Type不支持的音频格式422Validation Error参数验证失败500Internal Server Error服务器内部错误503Service Unavailable服务未就绪或模型加载中4. 实际调用示例4.1 使用curl命令调用APIcurl是最简单的测试方式适合快速验证接口是否正常工作。基本调用示例curl -X POST http://localhost:7861/asr \ -F audio_filetest_audio.wav \ -F languagezh带超时设置的调用curl -X POST http://localhost:7861/asr \ -F audio_filelong_audio.wav \ -F languageauto \ --max-time 30保存响应结果curl -X POST http://localhost:7861/asr \ -F audio_filemeeting.wav \ -F languagezh \ -o response.json4.2 Python代码调用示例对于需要在程序中集成语音识别的开发者Python是最常用的调用方式。基本调用示例import requests def transcribe_audio(audio_path, languageauto): 调用Qwen3-ASR接口进行语音识别 Args: audio_path: 音频文件路径 language: 识别语言默认auto自动检测 Returns: dict: 识别结果 url http://localhost:7861/asr with open(audio_path, rb) as f: files { audio_file: (audio_path, f, audio/wav), language: (None, language) } response requests.post(url, filesfiles) if response.status_code 200: return response.json() else: raise Exception(f识别失败: {response.status_code} - {response.text}) # 使用示例 result transcribe_audio(test.wav, zh) print(f识别语言: {result[language]}) print(f识别内容: {result[text]}) print(f处理时间: {result[processing_time]}秒)带错误处理的完整示例import requests import time class QwenASRClient: def __init__(self, hostlocalhost, port7861): self.base_url fhttp://{host}:{port} def transcribe(self, audio_path, languageauto, timeout30): 语音识别方法包含完整的错误处理 Args: audio_path: 音频文件路径 language: 识别语言 timeout: 请求超时时间秒 Returns: dict: 识别结果或错误信息 url f{self.base_url}/asr try: with open(audio_path, rb) as f: files { audio_file: (audio_path, f, audio/wav), language: (None, language) } response requests.post( url, filesfiles, timeouttimeout ) response.raise_for_status() return response.json() except requests.exceptions.Timeout: return {status: error, error: 请求超时} except requests.exceptions.ConnectionError: return {status: error, error: 连接失败} except Exception as e: return {status: error, error: str(e)} # 使用示例 client QwenASRClient(192.168.1.100, 7861) # 识别中文音频 result client.transcribe(chinese_audio.wav, zh) if result[status] success: print(f识别成功: {result[text]}) else: print(f识别失败: {result[error]}) # 自动检测语言 result client.transcribe(unknown_language.wav, auto)批量处理示例import os import json from concurrent.futures import ThreadPoolExecutor def batch_transcribe(audio_dir, output_fileresults.json): 批量处理目录中的所有音频文件 Args: audio_dir: 音频文件目录 output_file: 结果输出文件 client QwenASRClient() results [] # 获取所有wav文件 audio_files [f for f in os.listdir(audio_dir) if f.endswith(.wav)] def process_file(filename): audio_path os.path.join(audio_dir, filename) result client.transcribe(audio_path, auto) result[filename] filename return result # 使用线程池并行处理 with ThreadPoolExecutor(max_workers3) as executor: future_to_file { executor.submit(process_file, f): f for f in audio_files } for future in future_to_file: try: results.append(future.result()) except Exception as e: results.append({ filename: future_to_file[future], status: error, error: str(e) }) # 保存结果 with open(output_file, w, encodingutf-8) as f: json.dump(results, f, ensure_asciiFalse, indent2) return results # 批量处理示例 batch_transcribe(./audio_files)5. 高级使用技巧5.1 性能优化建议为了获得更好的识别效果和性能这里有一些实用建议音频预处理import librosa import soundfile as sf def preprocess_audio(input_path, output_path): 音频预处理函数确保符合模型要求 # 读取音频 y, sr librosa.load(input_path, sr16000, monoTrue) # 标准化音量 y librosa.util.normalize(y) # 保存为16kHz单声道WAV sf.write(output_path, y, 16000, subtypePCM_16) return output_path # 使用预处理 clean_audio preprocess_audio(noisy_audio.wav, clean_audio.wav) result client.transcribe(clean_audio, zh)并发处理控制# 控制并发请求数量避免服务器过载 from threading import Semaphore class LimitedASRClient(QwenASRClient): def __init__(self, max_concurrent2, *args, **kwargs): super().__init__(*args, **kwargs) self.semaphore Semaphore(max_concurrent) def transcribe(self, *args, **kwargs): with self.semaphore: return super().transcribe(*args, **kwargs)5.2 常见问题处理处理大文件def split_long_audio(audio_path, segment_duration300): 分割长音频为多个片段 import librosa import numpy as np y, sr librosa.load(audio_path, sr16000) segment_samples segment_duration * sr segments [] for i in range(0, len(y), segment_samples): segment y[i:i segment_samples] segment_path fsegment_{i//segment_samples}.wav sf.write(segment_path, segment, sr) segments.append(segment_path) return segments # 处理长音频 long_audio_segments split_long_audio(long_meeting.wav) results [] for segment in long_audio_segments: results.append(client.transcribe(segment, zh))格式转换处理def convert_to_wav(input_path, output_path): 将其他格式转换为WAV格式 import subprocess cmd [ ffmpeg, -i, input_path, -ar, 16000, -ac, 1, -y, output_path ] subprocess.run(cmd, checkTrue, capture_outputTrue) return output_path # 转换MP3到WAV wav_file convert_to_wav(audio.mp3, audio.wav) result client.transcribe(wav_file, auto)6. 总结通过本教程你应该已经掌握了Qwen3-ASR-1.7B模型的7861 API接口的使用方法。这个接口提供了简单而强大的语音识别能力支持多种语言和自动语言检测。关键要点回顾API接口地址http://实例IP:7861/asr支持POST方法multipart/form-data格式必须提供WAV格式的音频文件可以选择识别语言或使用auto自动检测返回JSON格式的识别结果最佳实践建议始终对音频进行预处理确保16kHz单声道格式对于长音频先分割再识别控制并发请求数量避免服务器压力过大添加适当的错误处理和重试机制对于生产环境建议使用连接池和超时设置这个语音识别服务可以轻松集成到各种应用中无论是会议转录、语音助手还是内容审核都能提供可靠的离线识别能力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章