Bootstrap

超越openai的whisper,最新语音理解大模型Qwen2-Audio模型部署

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)

未完......

更多详细的内容欢迎关注:杰哥新技术
 

;