Qwen2-Audio是由阿里巴巴集团研发的一款大型音频语言模型。
Qwen2-Audio应用技术包括多模态输入处理、预训练与微调、注意力机制、条件文本生成、编码器-解码器架构以及Transformer架构。
Qwen2-Audio支持直接语音输入和多语言文本输出,具备语音聊天和音频分析两大功能,并支持超过8种语言,包括中文、英语、粤语、法语等。
Qwen2-Audio的特点是能够接受音频和文本输入,并生成文本输出,无需通过自动语音识别模块即可进行语音聊天,同时能够根据文本指令分析音频信息,包括语音、声音、音乐等。
在性能测试方面,Qwen2-Audio在多个主流基准测试中表现优异,尤其是在语音识别和翻译的准确性上,超越了OpenAI的Whisper-large-v3。
其中github项目地址为:https://github.com/QwenLM/Qwen2-Audio。
一、环境安装
1、python环境
建议安装python版本在3.10以上。
2、pip库安装
pip install torch==2.3.0+cu118 torchvision==0.18.0+cu118 torchaudio==2.3.0 --extra-index-url https://download.pytorch.org/whl/cu118
pip install git+https://github.com/huggingface/transformers
pip install -r requirements_web_demo.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3、Qwen2-Audio-7B-Instruct模型下载:
git lfs install
git clone https://www.modelscope.cn/qwen/Qwen2-Audio-7B-Instruct.git
二、功能测试
1、运行测试:
(1)python代码调用测试voice chat
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": "user", "content": [
{"type": "audio", "audio_path": "test1.wav"},
]},
{"role": "assistant", "content": "Yes, the speaker is female and in her twenties."},
{"role": "user", "content": [
{"type": "audio", "audio_path": "test2.wav"},
]},
]
# 生成聊天模板文本并解析音频
text = processor.apply_chat_template(conversation, add_generation_prompt=True, tokenize=False)
audios = [
librosa.load(ele['audio_path'], sr=processor.feature_extractor.sampling_rate)[0]
for message in conversation if isinstance(message["content"], list)
for ele in message["content"] if ele["type"] == "audio"
]
# 准备模型输入数据
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)
未完......
更多详细的内容欢迎关注:杰哥新技术