Qwen3-ASR-1.7B详细步骤:模型输出token概率可视化+置信度阈值调试
1. 工具概览
Qwen3-ASR-1.7B是基于阿里云通义千问团队开源的中量级语音识别模型开发的本地智能语音转文字工具。相比之前的0.6B版本,这个版本在复杂长难句和中英文混合语音识别方面有显著提升,同时保持了较高的推理效率。
核心特点:
- 支持自动检测中文和英文语种
- 采用FP16半精度推理优化,显存需求约4-5GB
- 适配多种音频格式(WAV/MP3/M4A/OGG)
- 纯本地运行,保障音频隐私安全
2. 环境准备与安装
2.1 硬件要求
- GPU:NVIDIA显卡,显存≥5GB
- 内存:≥8GB
- 存储:≥5GB可用空间
2.2 软件依赖安装
pip install torch torchaudio transformers streamlit pip install soundfile librosa2.3 模型下载
from transformers import AutoModelForCTC, AutoProcessor model = AutoModelForCTC.from_pretrained("Qwen/Qwen3-ASR-1.7B") processor = AutoProcessor.from_pretrained("Qwen/Qwen3-ASR-1.7B")3. 基础语音识别流程
3.1 音频预处理
import librosa def load_audio(file_path): audio, sr = librosa.load(file_path, sr=16000) return audio, sr3.2 语音识别推理
def transcribe_audio(audio, sr): inputs = processor(audio, sampling_rate=sr, return_tensors="pt") with torch.no_grad(): logits = model(**inputs).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = processor.batch_decode(predicted_ids)[0] return transcription, logits4. Token概率可视化实现
4.1 获取token概率
import numpy as np def get_token_probabilities(logits): probs = torch.nn.functional.softmax(logits, dim=-1) top_probs, top_indices = torch.topk(probs, k=5, dim=-1) return top_probs.squeeze().numpy(), top_indices.squeeze().numpy()4.2 可视化展示
import matplotlib.pyplot as plt def plot_token_probabilities(probs, indices, processor): plt.figure(figsize=(12, 6)) for i in range(probs.shape[0]): tokens = [processor.decode([idx]) for idx in indices[i]] plt.bar(tokens, probs[i]) plt.xlabel("Tokens") plt.ylabel("Probability") plt.title("Top Token Probabilities") plt.xticks(rotation=45) plt.tight_layout() plt.show()5. 置信度阈值调试
5.1 设置置信度阈值
def apply_confidence_threshold(transcription, logits, threshold=0.7): probs = torch.nn.functional.softmax(logits, dim=-1) max_probs = torch.max(probs, dim=-1).values mask = max_probs > threshold filtered_ids = torch.argmax(logits, dim=-1)[mask] filtered_transcription = processor.decode(filtered_ids) return filtered_transcription5.2 阈值效果对比
audio, sr = load_audio("sample.wav") transcription, logits = transcribe_audio(audio, sr) print("原始识别结果:", transcription) print("阈值0.7结果:", apply_confidence_threshold(transcription, logits, 0.7)) print("阈值0.9结果:", apply_confidence_threshold(transcription, logits, 0.9))6. 完整流程示例
6.1 端到端流程代码
def full_pipeline(audio_path, confidence_threshold=0.7): # 1. 加载音频 audio, sr = load_audio(audio_path) # 2. 语音识别 transcription, logits = transcribe_audio(audio, sr) # 3. 获取token概率 probs, indices = get_token_probabilities(logits) # 4. 可视化 plot_token_probabilities(probs, indices, processor) # 5. 应用置信度阈值 filtered_transcription = apply_confidence_threshold(transcription, logits, confidence_threshold) return { "original": transcription, "filtered": filtered_transcription, "confidence_scores": probs }6.2 结果分析
运行上述流程后,你会得到:
- 原始识别文本
- 经过置信度阈值过滤后的文本
- 每个token的top-5概率分布可视化图表
7. 总结
模型优势:Qwen3-ASR-1.7B在复杂语音识别场景下表现优异,特别是对长难句和中英文混合内容的识别准确率显著提升。
可视化价值:通过token概率可视化,可以直观了解模型对每个识别结果的置信度,帮助调试和优化识别效果。
阈值调试:合理设置置信度阈值可以过滤掉低置信度的识别结果,提高整体识别准确率,但需要注意阈值过高可能导致内容缺失。
实用建议:对于会议记录等场景,建议先使用默认参数运行,再根据可视化结果调整置信度阈值,找到准确率和完整性的最佳平衡点。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。