Qwen3-ASR-1.7B代码实例:Python调用API实现批量语音转写脚本
本文介绍了如何在星图GPU平台上自动化部署Qwen3-ASR-1.7B镜像,并利用Python脚本调用其API实现高效的批量语音转写。该方案特别适用于处理大量会议录音、访谈等音频材料,能自动识别包括中文方言在内的多种语言,并将其快速转换为文字,显著提升内容处理效率。
Qwen3-ASR-1.7B代码实例:Python调用API实现批量语音转写脚本
语音转写效率提升神器:本文将手把手教你用Python脚本批量调用Qwen3-ASR-1.7B的API接口,实现自动化语音转文字,让音频处理效率提升10倍!
1. 环境准备与快速部署
在开始编写批量转写脚本之前,我们需要先确保Qwen3-ASR-1.7B服务正常运行。这个语音识别模型支持52种语言和方言,包括30种通用语言和22种中文方言,识别精度相当不错。
1.1 检查服务状态
首先通过SSH连接到你的服务器,检查ASR服务是否正常运行:
# 查看服务状态
supervisorctl status qwen3-asR
# 如果服务未运行,启动服务
supervisorctl start qwen3-asr
# 检查7860端口是否监听
netstat -tlnp | grep 7860
1.2 安装Python依赖
我们的批量处理脚本需要以下几个Python库:
pip install requests tqdm pydub
requests:用于调用API接口tqdm:显示处理进度条pydub:音频文件格式处理和转换
2. 核心代码实现
现在我们来编写批量语音转写的Python脚本。这个脚本会自动遍历指定文件夹中的所有音频文件,逐个调用API进行转写,并保存结果。
2.1 基础API调用函数
首先实现最核心的API调用函数:
import requests
import json
import os
from tqdm import tqdm
class QwenASRClient:
def __init__(self, base_url="http://localhost:7860"):
self.base_url = base_url
self.api_url = f"{base_url}/inference"
def transcribe_audio(self, audio_path, language="auto"):
"""
单文件语音转写
:param audio_path: 音频文件路径
:param language: 语言类型,默认auto自动检测
:return: 转写结果
"""
try:
with open(audio_path, 'rb') as audio_file:
files = {'audio': audio_file}
data = {'language': language}
response = requests.post(
self.api_url,
files=files,
data=data,
timeout=300 # 设置5分钟超时
)
if response.status_code == 200:
result = response.json()
return result.get('text', ''), result.get('language', '')
else:
print(f"转写失败: {response.status_code} - {response.text}")
return None, None
except Exception as e:
print(f"处理文件 {audio_path} 时出错: {str(e)}")
return None, None
2.2 批量处理功能
接下来实现批量处理功能,支持多种音频格式:
def batch_transcribe(input_folder, output_file="transcription_results.txt", language="auto"):
"""
批量转写文件夹中的所有音频文件
:param input_folder: 输入文件夹路径
:param output_file: 输出结果文件
:param language: 语言类型
"""
# 支持的文件格式
supported_formats = ['.wav', '.mp3', '.flac', '.ogg', '.m4a']
# 收集所有音频文件
audio_files = []
for file in os.listdir(input_folder):
if any(file.lower().endswith(fmt) for fmt in supported_formats):
audio_files.append(os.path.join(input_folder, file))
if not audio_files:
print("未找到支持的音频文件")
return
print(f"找到 {len(audio_files)} 个音频文件")
# 初始化客户端
client = QwenASRClient()
# 开始批量处理
results = []
for audio_file in tqdm(audio_files, desc="处理进度"):
text, detected_language = client.transcribe_audio(audio_file, language)
if text:
results.append({
'file': os.path.basename(audio_file),
'language': detected_language,
'text': text
})
# 保存结果
save_results(results, output_file)
print(f"处理完成!结果已保存到 {output_file}")
def save_results(results, output_file):
"""保存转写结果到文件"""
with open(output_file, 'w', encoding='utf-8') as f:
for result in results:
f.write(f"文件: {result['file']}\n")
f.write(f"检测语言: {result['language']}\n")
f.write(f"转写内容: {result['text']}\n")
f.write("-" * 50 + "\n\n")
3. 高级功能扩展
基础的批量转写已经实现了,但我们还可以添加一些实用功能来提升脚本的实用性。
3.1 支持大文件分片处理
对于长时间的音频文件,我们可以实现自动分片处理:
from pydub import AudioSegment
import math
def split_large_audio(audio_path, chunk_length_ms=300000):
"""
将长音频分割为5分钟一段的片段
:param audio_path: 音频文件路径
:param chunk_length_ms: 分片长度(毫秒)
:return: 分片文件路径列表
"""
audio = AudioSegment.from_file(audio_path)
duration_ms = len(audio)
chunks = math.ceil(duration_ms / chunk_length_ms)
output_files = []
for i in range(chunks):
start_ms = i * chunk_length_ms
end_ms = min((i + 1) * chunk_length_ms, duration_ms)
chunk = audio[start_ms:end_ms]
output_path = f"{audio_path}_chunk_{i+1}.wav"
chunk.export(output_path, format="wav")
output_files.append(output_path)
return output_files
def transcribe_large_audio(audio_path, language="auto"):
"""处理大音频文件"""
chunks = split_large_audio(audio_path)
full_text = ""
for chunk_file in chunks:
text, _ = QwenASRClient().transcribe_audio(chunk_file, language)
if text:
full_text += text + " "
# 清理临时文件
os.remove(chunk_file)
return full_text.strip()
3.2 结果导出多种格式
除了文本格式,我们还可以支持导出为CSV和JSON格式:
import csv
import json
def export_to_csv(results, output_file):
"""导出结果为CSV格式"""
with open(output_file, 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(['文件名', '检测语言', '转写内容'])
for result in results:
writer.writerow([
result['file'],
result['language'],
result['text']
])
def export_to_json(results, output_file):
"""导出结果为JSON格式"""
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
4. 完整使用示例
现在让我们看看如何实际使用这个批量转写脚本:
4.1 基本用法示例
# 最简单用法 - 自动检测语言
batch_transcribe(
input_folder="/path/to/your/audio/files",
output_file="transcription_results.txt"
)
# 指定语言类型(中文)
batch_transcribe(
input_folder="/path/to/your/audio/files",
output_file="chinese_results.txt",
language="zh"
)
# 指定语言类型(英语)
batch_transcribe(
input_folder="/path/to/your/audio/files",
output_file="english_results.txt",
language="en"
)
4.2 处理特定方言
Qwen3-ASR-1.7B支持多种中文方言,你可以这样指定:
# 处理粤语音频
batch_transcribe(
input_folder="/path/to/cantonese/audio",
output_file="cantonese_results.txt",
language="yue" # 粤语代码
)
# 处理四川话音频
batch_transcribe(
input_folder="/path/to/sichuan/audio",
output_file="sichuan_results.txt",
language=" Sichuan" # 四川话
)
5. 实用技巧与建议
在实际使用过程中,这里有一些实用建议可以帮助你获得更好的转写效果:
5.1 音频预处理建议
def optimize_audio_for_asr(audio_path, output_path):
"""
优化音频质量以提升识别准确率
"""
audio = AudioSegment.from_file(audio_path)
# 标准化音量(-20dBFS)
audio = audio.apply_gain(-20 - audio.dBFS)
# 降噪(简单版本)
audio = audio.low_pass_filter(3000)
# 导出为WAV格式(ASR模型处理效果最好)
audio.export(output_path, format="wav", parameters=["-ac", "1", "-ar", "16000"])
return output_path
5.2 错误处理和重试机制
def transcribe_with_retry(audio_path, language="auto", max_retries=3):
"""带重试机制的转写函数"""
for attempt in range(max_retries):
try:
text, detected_language = QwenASRClient().transcribe_audio(audio_path, language)
if text:
return text, detected_language
except Exception as e:
print(f"第{attempt+1}次尝试失败: {str(e)}")
time.sleep(2) # 等待2秒后重试
print(f"文件 {audio_path} 转写失败,已达最大重试次数")
return None, None
6. 总结
通过本文的Python脚本,你现在可以轻松实现批量语音转写功能了。这个脚本不仅支持基本的单文件转写,还提供了批量处理、大文件分片、多格式导出等实用功能。
主要收获:
- 学会了如何调用Qwen3-ASR-1.7B的API接口
- 掌握了批量处理音频文件的完整流程
- 了解了如何优化音频质量提升识别准确率
- 获得了处理大文件和错误重试的实用技巧
下一步建议:
- 尝试处理不同语言和方言的音频,体验模型的多语言能力
- 根据自己的需求调整批处理参数,比如并发数、超时时间等
- 将脚本集成到你的工作流程中,自动化处理日常的语音转写任务
这个批量转写脚本可以大大提升你的工作效率,特别是当你需要处理大量音频材料时。无论是会议录音、访谈内容还是语音笔记,现在都可以快速转换为文字了。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)