Qwen3-ASR-1.7B代码实例:Python调用API接口实现批量音频转写自动化
Qwen3-ASR-1.7B代码实例Python调用API接口实现批量音频转写自动化1. 引言音频转写的自动化需求在日常工作中我们经常需要处理大量的音频文件转写任务。无论是会议录音、采访记录还是语音备忘录手动逐一听写不仅耗时耗力还容易出错。Qwen3-ASR-1.7B作为阿里云通义千问团队开发的高精度语音识别模型为我们提供了完美的解决方案。这个1.7B参数版本的语音识别模型支持52种语言和方言包括30种主要语言和22种中文方言具备自动语言检测能力。更重要的是它提供了API接口让我们可以通过编程方式实现批量音频转写的自动化。本文将手把手教你如何使用Python调用Qwen3-ASR-1.7B的API接口构建一个高效的批量音频转写工具。无论你是技术小白还是有经验的开发者都能快速上手。2. 环境准备与API基础2.1 安装必要的Python库首先我们需要安装几个必要的Python库。打开终端或命令提示符执行以下命令pip install requests tqdm python-dotenv这些库的作用分别是requests用于发送HTTP请求到API接口tqdm显示进度条让批量处理过程更直观python-dotenv管理环境变量保护API密钥等敏感信息2.2 获取API访问信息Qwen3-ASR-1.7B镜像部署后Web服务通常运行在7860端口。假设你的实例访问地址是https://gpu-实例ID-7860.web.gpu.csdn.net/API端点通常是/api/transcribe我们将在代码中使用这个接口。3. 核心代码实现3.1 基础API调用函数让我们从最简单的单个音频文件转写开始import requests import json import os from tqdm import tqdm def transcribe_audio(api_url, audio_path, languageauto): 单个音频文件转写函数 参数: api_url: API接口地址 audio_path: 音频文件路径 language: 语言代码默认为auto自动检测 返回: 转写结果文本 try: # 准备请求数据 files {audio: open(audio_path, rb)} data {language: language} # 发送POST请求 response requests.post(api_url, filesfiles, datadata) # 检查响应状态 if response.status_code 200: result response.json() return result.get(text, ) else: print(f错误: HTTP {response.status_code}) return None except Exception as e: print(f转写过程中出错: {str(e)}) return None finally: # 确保文件被关闭 if files in locals(): files[audio].close() # 使用示例 api_url https://gpu-你的实例ID-7860.web.gpu.csdn.net/api/transcribe result transcribe_audio(api_url, meeting.wav) print(f转写结果: {result})3.2 批量处理实现现在我们来扩展这个函数支持批量处理多个音频文件import glob from pathlib import Path def batch_transcribe(api_url, audio_folder, output_folderresults, languageauto): 批量转写音频文件夹中的所有文件 参数: api_url: API接口地址 audio_folder: 音频文件所在文件夹 output_folder: 结果输出文件夹 language: 语言代码 返回: 成功转写的文件数量 # 创建输出文件夹 Path(output_folder).mkdir(exist_okTrue) # 获取所有支持的音频文件 audio_extensions [*.wav, *.mp3, *.flac, *.ogg] audio_files [] for ext in audio_extensions: audio_files.extend(glob.glob(os.path.join(audio_folder, ext))) if not audio_files: print(未找到音频文件) return 0 print(f找到 {len(audio_files)} 个音频文件) # 批量转写 success_count 0 for audio_file in tqdm(audio_files, desc转写进度): result transcribe_audio(api_url, audio_file, language) if result: # 保存结果到文件 output_file os.path.join( output_folder, f{Path(audio_file).stem}_transcript.txt ) with open(output_file, w, encodingutf-8) as f: f.write(result) success_count 1 print(f完成 {success_count}/{len(audio_files)} 个文件的转写) return success_count # 使用示例 batch_transcribe( api_urlhttps://gpu-你的实例ID-7860.web.gpu.csdn.net/api/transcribe, audio_folderaudio_files, output_foldertranscripts )4. 高级功能与错误处理4.1 带重试机制的转写函数网络请求可能会失败我们需要添加重试机制import time from requests.exceptions import RequestException def transcribe_with_retry(api_url, audio_path, languageauto, max_retries3): 带重试机制的音频转写函数 参数: api_url: API接口地址 audio_path: 音频文件路径 language: 语言代码 max_retries: 最大重试次数 返回: 转写结果文本 for attempt in range(max_retries): try: result transcribe_audio(api_url, audio_path, language) if result is not None: return result except RequestException as e: print(f第 {attempt 1} 次尝试失败: {str(e)}) if attempt max_retries - 1: wait_time 2 ** attempt # 指数退避 print(f等待 {wait_time} 秒后重试...) time.sleep(wait_time) print(f文件 {audio_path} 转写失败已达到最大重试次数) return None4.2 结果格式化和统计让我们添加一些结果处理的增强功能def process_transcription_results(input_folder, output_filesummary.csv): 处理转写结果生成汇总报告 参数: input_folder: 转写结果文件夹 output_file: 汇总文件输出路径 import csv from datetime import datetime results [] transcript_files glob.glob(os.path.join(input_folder, *.txt)) for file_path in transcript_files: with open(file_path, r, encodingutf-8) as f: content f.read() # 基础统计 char_count len(content) word_count len(content.split()) line_count len(content.split(\n)) results.append({ filename: Path(file_path).name, char_count: char_count, word_count: word_count, line_count: line_count, process_time: datetime.now().strftime(%Y-%m-%d %H:%M:%S) }) # 保存为CSV if results: with open(output_file, w, newline, encodingutf-8) as f: fieldnames [filename, char_count, word_count, line_count, process_time] writer csv.DictWriter(f, fieldnamesfieldnames) writer.writeheader() writer.writerows(results) print(f汇总报告已保存到: {output_file}) return results5. 完整自动化脚本现在我们把所有功能整合成一个完整的脚本#!/usr/bin/env python3 Qwen3-ASR-1.7B 批量音频转写自动化脚本 作者: 桦漫AIGC集成开发 import argparse import os from pathlib import Path def main(): # 解析命令行参数 parser argparse.ArgumentParser(descriptionQwen3-ASR-1.7B 批量音频转写工具) parser.add_argument(--api-url, requiredTrue, helpAPI接口地址) parser.add_argument(--input-dir, requiredTrue, help音频文件输入目录) parser.add_argument(--output-dir, defaulttranscripts, help转写结果输出目录) parser.add_argument(--language, defaultauto, help语言代码默认为auto自动检测) parser.add_argument(--max-retries, typeint, default3, help最大重试次数) args parser.parse_args() # 执行批量转写 print(开始批量音频转写...) success_count batch_transcribe( api_urlargs.api_url, audio_folderargs.input_dir, output_folderargs.output_dir, languageargs.language ) # 生成汇总报告 if success_count 0: process_transcription_results(args.output_dir) print(f批量转写完成成功处理 {success_count} 个文件) else: print(没有文件被成功转写) if __name__ __main__: main()使用这个脚本的方法很简单python audio_transcriber.py \ --api-url https://gpu-你的实例ID-7860.web.gpu.csdn.net/api/transcribe \ --input-dir 我的音频文件 \ --output-dir 转写结果 \ --language zh # 中文转写6. 实际应用建议6.1 性能优化技巧如果你需要处理大量音频文件可以考虑以下优化措施# 使用多线程加速处理 from concurrent.futures import ThreadPoolExecutor, as_completed def parallel_batch_transcribe(api_url, audio_files, languageauto, max_workers4): 多线程批量转写 success_count 0 with ThreadPoolExecutor(max_workersmax_workers) as executor: # 提交所有任务 future_to_file { executor.submit(transcribe_with_retry, api_url, file, language): file for file in audio_files } # 处理完成的任务 for future in tqdm(as_completed(future_to_file), totallen(audio_files)): file future_to_file[future] try: result future.result() if result: success_count 1 except Exception as e: print(f文件 {file} 处理失败: {str(e)}) return success_count6.2 常见问题处理在实际使用中可能会遇到的一些问题音频质量不佳建议先对音频进行降噪处理网络不稳定使用我们上面实现的重试机制大文件处理如果音频文件很大考虑先分割再转写def split_large_audio(audio_path, max_duration300, output_foldersplit_audio): 分割大音频文件为小段 使用pydub库需要额外安装: pip install pydub from pydub import AudioSegment from pydub.silence import split_on_silence Path(output_folder).mkdir(exist_okTrue) audio AudioSegment.from_file(audio_path) chunks split_on_silence( audio, min_silence_len1000, silence_thresh-40, keep_silence500 ) output_files [] for i, chunk in enumerate(chunks): output_file os.path.join(output_folder, f{Path(audio_path).stem}_part{i1}.wav) chunk.export(output_file, formatwav) output_files.append(output_file) return output_files7. 总结通过本文的代码实例你已经掌握了使用Python调用Qwen3-ASR-1.7B API接口实现批量音频转写自动化的完整方法。从基础的单文件转写到复杂的批量处理、错误重试、结果统计我们覆盖了实际应用中的各种场景。关键要点回顾Qwen3-ASR-1.7B提供高质量的语音识别能力支持多种语言和方言通过简单的API调用就能实现音频转写功能批量处理可以大幅提高工作效率适当的错误处理和重试机制确保程序稳定性你可以根据实际需求调整代码比如添加邮件通知功能、集成到现有工作流中或者开发Web界面让非技术人员也能使用。这个自动化工具不仅能节省大量时间还能确保转写结果的一致性和准确性。现在就开始尝试吧让你的音频转写工作变得更加高效和轻松获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2495505.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!