目录
4 月 26 日,Moonshot AI正式宣布推出Kimi-Audio,一款全新的开源音频基础模型,旨在推动音频理解、生成和交互领域的技术进步。这一发布引发了全球AI社区的广泛关注,被认为是多模态AI发展的重要里程碑。Kimi-Audio-7B-Instruct基于Qwen2.5-7B架构,并结合Whisper技术,展现了强大的多功能性。
一、模型介绍
Kimi Audio被设计为一个通用的音频基础模型,能够在一个统一的框架内处理各种音频处理任务。主要功能包括:
通用功能:处理各种任务,如语音识别(ASR)、音频问答(AQA)、音频字幕(AAC)、语音情感识别(SER)、声音事件/场景分类(SEC/ASC)和端到端语音对话。
最先进的性能:在众多音频基准测试中取得SOTA结果(见评估和技术报告)。
大规模预训练:对超过1300万小时的各种音频数据(语音、音乐、声音)和文本数据进行预训练,实现强大的音频推理和语言理解。
新颖的架构:采用混合音频输入(连续声学+离散语义标记)和具有并行头的LLM核心来生成文本和音频标记。
高效推理:基于流匹配的块流式去标记器,用于低延迟音频生成。
开源:我们发布了代码、用于预训练和指令微调的模型检查点,以及一个全面的评估工具包,以促进社区的研究和开发。
模型地址:https://github.com/MoonshotAI/Kimi-Audio
论文地址:https://github.com/MoonshotAI/Kimi-Audio/blob/master/assets/kimia_report.pdf
模型数据:魔搭社区
模型架构:
测评结果:
Kimi-Audio与以往音频语言模型在各类基准测试上的表现对比
语音识别方面,LibriSpeech英文测试集,Kimi-Audio的错误率(WER)只有1.28%,比Qwen2.5-Omni的2.37%还低一截。AISHELL-1中文:WER 0.60%,比上一代模型低一半。此外多场景、多语种、多环境,Kimi-Audio基本都是榜首。
音频理解方面,Kimi-Audio在MMAU、MELD、VocalSound、TUT2017等公开集上,分数都是最高。比如MMAU的“声音理解”类,Kimi-Audio得分73.27,超过其它竞品。
音频对话&音频聊天方面,VoiceBench的多项任务,Kimi-Audio都是第一,平均得分76.93。
Kimi-Audio的卓越性能得益于其庞大的训练数据集。据官方披露,该模型在超过1300万小时的多样化音频数据上进行训练,涵盖语音、音乐、环境音等多种类型。Moonshot AI还开源了Kimi-Audio的训练代码、模型权重以及评估工具包。
二、模型部署
环境 :ubuntu22.4 系统、内存32G、GPU 32G 英伟达V100、CPU 16核
Python 3.10.12
Pytorch 2.4.1
CUDA 12.1
前置部署请参照
Ubuntu22.4部署及更新cuda11.8与cuda12.1-CSDN博客
1、创建工作空间
mkdir /opt/workspace
2、下载模型
cd /opt/workspace
git clone https://github.moeyy.xyz/https://github.com/MoonshotAI/Kimi-Audio.git
3、下载依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
下载flash_attn依赖(这一步很重要,要不然代码程序无法执行)
pip install flash_attn
如果一直无法安装,可直接下载安装文件,然后再安装
cd /opt/workspace/
wget https://github.moeyy.xyz/https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.4cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
pip install flash_attn-2.7.4.post1+cu12torch2.4cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
以上下载地址可参考:Releases · Dao-AILab/flash-attention · GitHub
4、下载模型库
模型库地址:魔搭社区
在/opt/workspace/Kimi-Audio/中创建文件夹moonshotai
定位到目录
cd moonshotai
执行如下操作
sudo apt-get install git-lfs
git lfs install
git clone https://www.modelscope.cn/moonshotai/Kimi-Audio-7B.git
5、下载glm4_tokenizer
为何要下载gml4,是因为源码中调用,官方代码中没有
查看源码
发现glm4中竟然缺少文件,查看官网发现竟然超链接到GitHub - THUDM/GLM-4-Voice: GLM-4-Voice | 端到端中英语音对话模型
cd /opt/workspace/Kimi-Audio/kimia_infer/models/tokenizer
rm -fr glm4
git clone https://github.moeyy.xyz/https://github.com/THUDM/GLM-4-Voice.git
mv GLM-4-Voice glm4
结果如下
6、代码编程修改
将/opt/workspace/Kimi-Audio/infer.py文件中第九行内容moonshotai/Kimi-Audio-7B-Instruct修改为moonshotai/Kimi-Audio-7B
代码如下(已完善注释):
# 导入必要的库
from kimia_infer.api.kimia import KimiAudio # Kimi音频模型接口
import os # 操作系统接口
import soundfile as sf # 音频文件读写库
if __name__ == "__main__":
# 初始化KimiAudio模型
model = KimiAudio(
model_path="moonshotai/Kimi-Audio-7B", # 指定模型路径
load_detokenizer=True, # 加载detokenizer
)
# 设置采样参数
sampling_params = {
"audio_temperature": 0.8, # 音频生成温度(音频情感波动性)
"audio_top_k": 10, # 音频生成的top-k采样
"text_temperature": 0.0, # 文本生成温度
"text_top_k": 5, # 文本生成的top-k采样
"audio_repetition_penalty": 1.0, # 音频重复惩罚因子
"audio_repetition_window_size": 64, # 音频重复窗口大小
"text_repetition_penalty": 1.0, # 文本重复惩罚因子
"text_repetition_window_size": 16, # 文本重复窗口大小
}
# ================= 第一部分:语音识别(ASR) =================
# 构建消息列表,包含用户指令和音频输入
messages = [
{"role": "user", "message_type": "text", "content": "请将音频内容转换为文字。"}, # 文本指令
{
"role": "user",
"message_type": "audio",
"content": "test_audios/asr_example.wav", # 音频文件路径
},
]
# 调用模型生成文本输出(语音转文字)
wav, text = model.generate(messages, **sampling_params, output_type="text")
print(">>> output text: ", text) # 打印识别结果
# ================= 第二部分:音频处理 =================
# 创建输出目录
output_dir = "test_audios/output"
os.makedirs(output_dir, exist_ok=True) # 如果目录不存在则创建
# 构建只包含音频输入的消息
messages = [
{
"role": "user",
"message_type": "audio",
"content": "test_audios/qa_example.wav", # 输入音频文件
}
]
# 调用模型同时生成音频和文本输出
wav, text = model.generate(messages, **sampling_params, output_type="both")
# 保存生成的音频文件
sf.write(
os.path.join(output_dir, "output.wav"), # 输出文件路径
wav.detach().cpu().view(-1).numpy(), # 处理音频数据
24000, # 采样率24kHz
)
print(">>> output text: ", text) # 打印生成的文本
代码展示了如何使用KimiAudio模型进行音频处理任务。我来为您解释一下代码的主要功能:
首先导入必要的库:
- KimiAudio:Kimi音频模型的接口
- os:操作系统接口
- soundfile:音频文件读写库
主要功能分为两部分:
第一部分 - 语音识别(ASR):
- 加载KimiAudio模型,指定模型路径为"moonshotai/Kimi-Audio-7B-Instruct"
- 设置采样参数,包括音频和文本生成的各种温度、top_k等参数
- 构建消息列表,包含一条文本指令和一条音频输入
- 调用模型生成文本输出(语音转文字)
第二部分 - 音频处理:
- 创建输出目录
- 构建只包含音频输入的消息
- 调用模型同时生成音频和文本输出
- 使用soundfile将生成的音频保存为WAV文件
注意事项:
- 代码中使用了相对路径"test_audios/"下的音频文件,请确保这些文件存在
- 输出音频采样率设为24000Hz
- 模型需要加载detokenizer(load_detokenizer=True)
这个示例展示了KimiAudio模型的两个主要功能:
- 语音识别(将音频转为文字)
- 音频生成/处理(输入音频生成新的音频)
6、代码调试
cd /opt/workspace/Kimi-Audio/
python3 infer.py