目录
引言
在人工智能领域,语音技术的发展一直是研究的热点之一。随着深度学习技术的不断进步,AI语音模型在语音识别、语音合成、语音翻译等多个方面取得了显著的成果。近期,阿里通义千问团队推出的Qwen2-Audio模型,以其开源的特性和强大的功能,引起了业界的广泛关注。本文将对Qwen2-Audio模型进行详细的介绍和分析,旨在为读者提供一个全面的认识。
一、Qwen2-Audio简介
Qwen2-Audio是由阿里通义千问团队推出的一款开源AI语音模型,它不仅支持直接语音输入,还能进行多语言文本输出。该模型具备语音聊天和音频分析的功能,支持超过8种语言,包括中文、英语、粤语、法语等。Qwen2-Audio在多个基准数据集上的表现超越了先前的模型,显示出其卓越的性能。
二、功能特点
Qwen2-Audio的主要功能特点包括:
- 语音聊天:用户可以直接用语音与模型交流,无需通过自动语音识别(ASR)转换。
- 音频分析:能够根据文本指令分析音频内容,识别语音、声音和音乐等。
- 多语言支持:支持中文、英语、粤语、法语等多种语言和方言。
- 易于集成:代码已集成到Hugging Face的transformers库,方便开发者使用和推理。
- 可微调性:支持通过ms-swift框架进行模型微调,以适应不同应用需求。
三、技术原理
Qwen2-Audio的技术原理涵盖了以下几个方面:
- 多模态输入处理:模型能接收并处理音频和文本两种模态的输入。
- 预训练与微调:在大量多模态数据上进行预训练,学习语言和音频的联合表示,并通过微调提高特定应用场景下的性能。
- 注意力机制:使用注意力机制加强音频和文本之间的关联。
- 条件文本生成:根据给定的音频和文本条件生成响应文本。
- 编码器-解码器架构:采用编码器-解码器架构,处理输入并生成输出文本。
- Transformer架构:作为transformers库的一部分,采用Transformer架构处理序列数据。
- 优化算法:使用优化算法调整模型参数,提高预测准确性。
四、模型评测
通义千问团队在一系列基准数据集,如 LibriSpeech、Common Voice 15、Fleurs、Aishell2、CoVoST2、Meld、Vocalsound 以及 AIR-Benchmark 上展开了实验,旨在评估 Qwen2-Audio 相较于通义千问团队先前发布的 Qwen-Audio 以及各项任务中的顶尖模型的表现。接下来,通义千问团队将会展示一张图表,用以阐释 Qwen2-Audio 相对于竞争对手的绩效。在所有任务里,Qwen2-Audio 均显著优于先前的最优模型或者 Qwen-Audio 。
五、应用场景
Qwen2-Audio的应用场景是多样化的,它以其卓越的语音处理能力,为不同领域带来了革命性的变革。以下是Qwen2-Audio的一些关键应用领域,它们展示了该模型如何融入并增强我们的日常生活和专业工作:
1、智能助手
Qwen2-Audio不仅仅是一个工具,更是一个随时待命的智能伙伴。作为虚拟助手,它能够通过自然语言处理与用户进行流畅的语音交互,无论是回答问题、提供信息还是执行命令,它都能以一种人性化的方式满足用户的需求。
2、语言翻译
在全球化的今天,语言障碍常常限制了人们的交流。Qwen2-Audio通过实时语音翻译功能,打破了这一限制。它能够即时将一种语言转换为另一种语言,极大地促进了不同文化和语言背景的人们之间的沟通与理解。
3、客服中心
客户服务是企业与消费者沟通的重要桥梁。Qwen2-Audio在自动化客户服务方面的应用,使得处理咨询和解决问题变得更加高效。它能够快速响应客户的需求,提供个性化的服务,同时减轻客服人员的工作压力。
4、音频内容分析
在信息爆炸的时代,音频内容分析成为了一种重要的信息处理手段。Qwen2-Audio能够深入分析音频数据,进行情感分析、关键词提取或语音识别,帮助企业和研究人员从大量音频资料中提取有价值的信息,为决策提供支持。
Qwen2-Audio的这些应用场景只是冰山一角。随着技术的不断进步,我们可以预见,它将在更多领域展现出其独特的价值,为人们的生活和工作带来更多的便捷和创新。
六、模型体验
Qwen2-Audio提供了丰富的体验方式,包括在线Demo体验和小程序体验,用户可以通过这些方式直观地感受模型的功能和性能。
体验链接:https://huggingface.co/spaces/Qwen/Qwen2-Audio-Instruct-Demo
七、模型推理
Qwen2-Audio的代码已集成到Hugging Face的transformers库中,提供了详细的推理教程,包括语音聊天和音频分析的推理示例,方便开发者快速上手。
1、安装依赖
要开始使用Qwen2-Audio模型进行推理,首先需要确保安装了transformers库,这是进行模型推理的基础。通过以下命令,您可以轻松地安装或更新到最新版本:
pip install git+https://github.com/huggingface/transformers
2、语音聊天推理
在语音聊天模式下,Qwen2-Audio模型允许用户以语音形式与模型进行自然交流,无需任何文字输入。以下是一个语音聊天推理的示例代码,展示了如何实现这一过程:
from io import BytesIO
from urllib.request import urlopen
import librosa
from transformers import Qwen2AudioForConditionalGeneration, AutoProcessor
# 初始化处理器和模型
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-Audio-7B-Instruct")
model = Qwen2AudioForConditionalGeneration.from_pretrained("Qwen/Qwen2-Audio-7B-Instruct", device_map="auto")
# 准备对话内容和音频URL
conversation = [
{"role": "user", "content": [
{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/guess_age_gender.wav"},
]},
{"role": "assistant", "content": "Yes, the speaker is female and in her twenties."},
{"role": "user", "content": [
{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/translate_to_chinese.wav"},
]},
]
# 加载音频并准备输入数据
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(librosa.load(
BytesIO(urlopen(ele['audio_url']).read()),
sr=processor.feature_extractor.sampling_rate)[0]
)
# 执行模型推理
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True)
inputs.input_ids = inputs.input_ids.to("cuda")
generate_ids = model.generate(**inputs, max_length=256)
generate_ids = generate_ids[:, inputs.input_ids.size(1):]
response = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
# 输出模型的响应
print(response)
3、音频分析推理
音频分析推理允许用户上传音频文件并提出相关问题,模型将分析音频内容并给出相应的回答。以下是一个音频分析推理的示例代码:
from io import BytesIO
from urllib.request import urlopen
import librosa
from transformers import Qwen2AudioForConditionalGeneration, AutoProcessor
# 初始化处理器和模型
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-Audio-7B-Instruct")
model = Qwen2AudioForConditionalGeneration.from_pretrained("Qwen/Qwen2-Audio-7B-Instruct", device_map="auto")
# 准备包含音频和文本的对话内容
conversation = [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{"role": "user", "content": [
{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/glass-breaking-151256.mp3"},
{"type": "text", "text": "What's that sound?"},
]},
{"role": "assistant", "content": "It is the sound of glass shattering."},
{"role": "user", "content": [
{"type": "text", "text": "What can you do when you hear that?"},
]},
{"role": "assistant", "content": "Stay alert and cautious, and check if anyone is hurt or if there is any damage to property."},
{"role": "user", "content": [
{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/1272-128104-0000.flac"},
{"type": "text", "text": "What does the person say?"},
]},
]
# 加载音频并准备输入数据
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = []
for message in conversation:
if isinstance(message["content"], list):
for ele in message["content"]:
if ele["type"] == "audio":
audios.append(
librosa.load(
BytesIO(urlopen(ele['audio_url']).read()),
sr=processor.feature_extractor.sampling_rate)[0]
)
# 执行模型推理
inputs = processor(text=text, audios=audios, return_tensors="pt", padding=True)
inputs.input_ids = inputs.input_ids.to("cuda")
generate_ids = model.generate(**inputs, max_length=256)
generate_ids = generate_ids[:, inputs.input_ids.size(1):]
response = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
# 输出模型的响应
print(response)
八、模型微调
Qwen2-Audio模型的微调是通过ms-swift框架实现的,这一过程可以针对特定的应用场景对模型进行定制化训练。为了简化微调流程,我们提供了详尽的教程和代码示例,确保开发者能够轻松上手。
swift开源地址:https://github.com/modelscope/ms-swift
1、数据集准备
在微调多模态大型模型时,自定义数据集是关键。官方提供了aishell1-zh-mini数据集作为示例,该数据集可在ModelScope平台上找到。
https://modelscope.cn/datasets/speech_asr/speech_asr_aishell1_trainsets
自定义数据集支持json和jsonl样式。以下提供了两种自定义数据集格式:
格式1:
[
{"conversations": [
{"from": "user", "value": "<audio>audio_path</audio>11111"},
{"from": "assistant", "value": "22222"}
]},
{"conversations": [
{"from": "user", "value": "<audio>audio_path</audio><audio>audio_path2</audio><audio>audio_path3</audio>aaaaa"},
{"from": "assistant", "value": "bbbbb"},
{"from": "user", "value": "<audio>audio_path</audio>ccccc"},
{"from": "assistant", "value": "ddddd"}
]},
{"conversations": [
{"from": "user", "value": "AAAAA"},
{"from": "assistant", "value": "BBBBB"},
{"from": "user", "value": "CCCCC"},
{"from": "assistant", "value": "DDDDD"}
]}
]
格式2:
{"query": "<audio>55555", "response": "66666", "audios": ["audio_path"]}
{"query": "<audio><audio>eeeee", "response": "fffff", "history": [], "audios": ["audio_path1", "audio_path2"]}
{"query": "EEEEE", "response": "FFFFF", "history": [["query1", "response1"], ["query2", "response2"]]}
2、安装依赖
在开始微调之前,需要在开始微调之前,确保已安装所有必要的依赖项。以下是安装命令:
# 安装ms-swift
pip install git+https://github.com/modelscope/swift.git#egg=ms-swift[llm]
# 安装最新的transformers
pip install git+https://github.com/huggingface/transformers.git
pip install librosa
3、模型微调
微调过程可以通过以下Python代码片段启动:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
from swift.llm import sft_main, SftArguments, ModelType, DatasetName
# 如果是本地路径需要指定model_id_or_path
sft_main(SftArguments(model_type=ModelType.qwen2_audio_7b_instruct,
model_id_or_path=None,
dataset=[DatasetName.aishell1_zh_mini]))
如果要使用自定义数据集,按以下方式进行指定:
# val_dataset可选,如果不指定,则会从dataset中切出一部分数据集作为验证集
--dataset train.jsonl \
--val_dataset val.jsonl \
4、微调后推理
微调完成后,可以在验证集上进行推理,以评估模型性能:
CUDA_VISIBLE_DEVICES=0 swift infer \
--ckpt_dir output/qwen2-audio-7b-instruct/vx-xxx/checkpoint-xxx \
--load_dataset_config true
# 如果使用了LoRA,合并LoRA权重后的推理
CUDA_VISIBLE_DEVICES=0 swift infer \
--ckpt_dir output/qwen2-audio-7b-instruct/vx-xxx/checkpoint-xxx \
--load_dataset_config true --merge_lora true
通过上述步骤,开发者可以对Qwen2-Audio模型进行有效的微调,以适应各种特定的应用需求,进而提升模型在目标任务上的性能和准确性。
结语
Qwen2-Audio,这一款开源的AI语音模型,以其卓越的性能和用户友好的设计,不仅为语音技术的进步注入了新的活力,更为整个行业的创新和发展开辟了无限可能。它的强大功能和易用性,让语音交互变得更加自然、流畅,极大地丰富了人机交流的深度和广度。
随着技术的持续演进,以及开源社区的不懈努力和智慧贡献,Qwen2-Audio正逐渐成为语音技术领域的一个重要里程碑。我们坚信,它将不仅仅是一个技术产品,更是推动行业发展、促进技术交流、激发创新思维的重要力量。
项目地址
- 模型体验:Qwen2-Audio Demo
- GitHu仓库:Qwen2-Audio GitHub
- arXiv技术论文:arxiv pdf
🎯🔖更多专栏系列文章:AI大模型提示工程完全指南、AI大模型探索之路(零基础入门)、AI大模型预训练微调进阶、AI大模型开源精选实践、AI大模型RAG应用探索实践🔥🔥🔥 其他专栏可以查看博客主页📑
😎 作者介绍:我是寻道AI小兵,资深程序老猿,从业10年+、互联网系统架构师,目前专注于AIGC的探索。
📖 技术交流:欢迎关注【小兵的AI视界】公众号或扫描下方👇二维码,加入技术交流群,开启编程探索之旅。
💘精心准备📚500本编程经典书籍、💎AI专业教程,以及高效AI工具。等你加入,与我们一同成长,共铸辉煌未来。
如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我,让我们携手同行AI的探索之旅,一起开启智能时代的大门!