# MooER **Repository Path**: osroot/MooER ## Basic Information - **Project Name**: MooER - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-12 - **Last Updated**: 2025-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

中文  |   English  



MooER (摩耳): 基于8万小时训练数据的开源音频理解大模型

梁镇麟许隽昊刘艺
胡一超黎健郑亚军蔡猛王华
共同一作



## 🔥 更新 - **`2024/09/03`**: 我们开源了MooER的 ***训练和推理代码*** ! 你可以参考这个[教程](tutorial/train.md) 来训练你自己的音频理解大模型和不同的任务,也可以基于我们开源的80k小时的模型来微调。 - **`2024/08/27`**: 我们推出了使用8万小时数据训练的[MooER-80K-v2](https://modelscope.cn/models/MooreThreadsSpeech/MooER-MTL-80K),您可从下文的评测结果中找到其对应的识别效果。目前,该模型仅支持语音识别任务,支持语音翻译及多任务识别的模型随后将会推出。 - **`2024/08/09`**: 我们推出了[基于Gradio的在线演示](https://mooer-speech.mthreads.com:10077/)。该演示系统运行在摩尔线程S4000服务器上。 - **`2024/08/09`**: 我们开源了推理代码,并同时开放了多个基于5000小时数据训练的语音识别及语音翻译(中->英)模型。欢迎试用! - **`2024/08/09`**: 我们在arXiv上发布了 MooER v0.1 的[技术报告](https://arxiv.org/abs/2408.05101). ## 📖 介绍 在本工作中,我们推出了**摩耳大模型(英文名:MooER)**—— 一个由摩尔线程开发的、基于大语言模型(Large Language Model,LLM)的语音识别和语音翻译系统。通过摩耳框架,您可以基于大语言模型,以端到端的方式,将输入语音自动转录为文本(即*语音识别*),并将其翻译为其它语言(即*语音翻译*)。关于MooER的具体效果,您可以查阅下文中有关*评测结果*的部分。在我们公布的[技术报告](https://arxiv.org/abs/2408.05101)中,我们提供了更详细的实验结果,并分享了我们对模型配置、训练策略等方面的理解。 我们自豪地指出,我们开源摩耳大模型完全采用摩尔线程S4000 GPU开发。**据我们所知,这是目前第一个完全使用国产GPU训练和推理的语音大模型。** > [!note] > 我们近期即将发布摩耳大模型的训练代码,并开源使用更大量数据训练的模型。敬请关注!


## 🥊 评测结果 此部分展示了我们使用的训练集和评测结果。更多其它信息,请参考我们的[技术报告](https://arxiv.org/pdf/2408.05101)。 ### 训练数据 我们使用5000小时数据(我们称之为MT5K),用于训练我们的初版摩耳大模型。这些数据组成如下: | 数据集 | 时长(小时) | |---------------|---------------| | aishell2 | 137 | | librispeech | 131 | | multi_cn | 100 | | wenetspeech | 1361 | | in-house data | 3274 | 需要注意的是,MT5K中使用的开源数据,是从完整开源数据集中随机选择的子集。由于我们内部收集的数据只有音频,没有对应文本,因此我们采用第三方提供的语音识别(ASR)服务,自动生成文本标签。 由于上述所有数据集均是针对语音识别任务设计的,因此没有可用的翻译标签(即对应的英文文本)。为了让模型具有翻译能力,我们采用第三方提供的机器翻译服务,自动生成翻译标签。为了尽可能简化数据采集流程,在整个数据处理过程中,我们没有使用任何数据过滤技术。 除了以上5000小时数据外,我们正在使用80000小时数据进行更大规模摩耳大模型的训练。 ### 语音识别效果 语音识别效果采用词错误率(Word Error Rate,WER)或字错误率(Character Error Rate,CER)表示。
Language Testset Paraformer-large SenseVoice-small Qwen-audio Whisper-large-v3 SeamlessM4T-v2 MooER-5K MooER-80K MooER-80K-v2
Chinese aishell1 1.93 3.03 1.43 7.86 4.09 1.93 1.25 1.00
aishell2_ios 2.85 3.79 3.57 5.38 4.81 3.17 2.67 2.62
test_magicdata 3.66 3.81 5.31 8.36 9.69 3.48 2.52 2.17
test_thchs 3.99 5.17 4.86 9.06 7.14 4.11 3.14 3.00
fleurs cmn_dev 5.56 6.39 10.54 4.54 7.12 5.81 5.23 5.15
fleurs cmn_test 6.92 7.36 11.07 5.24 7.66 6.77 6.18 6.14
average 4.15 4.93 6.13 6.74 6.75 4.21 3.50 3.35
English librispeech test_clean 14.15 4.07 2.15 3.42 2.77 7.78 4.11 3.57
librispeech test_other 22.99 8.26 4.68 5.62 5.25 15.25 9.99 9.09
fleurs eng_dev 24.93 12.92 22.53 11.63 11.36 18.89 13.32 13.12
fleurs eng_test 26.81 13.41 22.51 12.57 11.82 20.41 14.97 14.74
gigaspeech dev 24.23 19.44 12.96 19.18 28.01 23.46 16.92 17.34
gigaspeech test 23.07 16.65 13.26 22.34 28.65 22.09 16.64 16.97
average 22.70 12.46 13.02 12.46 14.64 17.98 12.66 12.47
### 语音翻译效果 (中翻英) 语音翻译效果采用BLEU分数表示。 | Testset | Speech-LLaMA | Whisper-large-v3 | Qwen-audio | Qwen2-audio | SeamlessM4T-v2 | MooER-5K | MooER-5K-MTL | |--------|-------------|-------------------|------------|-------------|-----------------|--------|--------------| |CoVoST1 zh2en | - | 13.5 | 13.5 | - | 25.3 | - | **30.2** | |CoVoST2 zh2en | 12.3 | 12.2 | 15.7 | 24.4 | 22.2 | 23.4 | **25.2** | |CCMT2019 dev | - | 15.9 | 12.0 | - | 14.8 | - | **19.6** | ## 🏁 使用指南 ### 🛠️ 环境搭建 目前,摩耳仅支持Linux系统。请确保您的系统已经安装了[`git`](https://git-scm.com/) and `python`。我们推荐使用 `>=3.8` 的Python版本。另外,我们强烈建议使用[`conda`](https://anaconda.org/anaconda/conda)的虚拟环境来控制您的Python依赖库。 为了能够进行快速的大语言模型推理,您需要使用GPU。对于使用摩尔线程S3000/S4000的用户,请安装[MUSA toolkit rc2.1.0](https://developer.mthreads.com/sdk/download/musa?equipment=&os=&driverVersion=&version=)。我们为S4000用户提供了Docker镜像。如果您使用其它品牌的GPU,请根据厂商提供的指南,自行安装相应的驱动程序及工具箱(例如CUDA等)。 请安装以下步骤设置您的软件环境: ```shell git clone https://github.com/MooreThreads/MooER cd MooER # (可选) 创建虚拟环境 conda create -n mooer python=3.8 conda activate mooer # 安装影响依赖项 apt update apt install ffmpeg sox pip install -r requirements.txt ``` 我们为摩尔线程S4000用户提供了Docker镜像: ```shell sudo docker run -it \ --privileged \ --name=torch_musa_release \ --env MTHREADS_VISIBLE_DEVICES=all \ -p 10010:10010 \ --shm-size 80g \ --ulimit memlock=-1 \ mtspeech/mooer:v1.0-rc2.1.0-v1.1.0-qy2 \ /bin/bash # 如果您使用nvidia显卡,并且CUDA版本是11.7,您可以尝试使用该镜像: sudo docker run -it \ --privileged \ --gpus all \ -p 10010:10010 \ --shm-size 80g \ --ulimit memlock=-1 \ mtspeech/mooer:v1.0-cuda11.7-cudnn8 \ /bin/bash ``` ### 💾 下载预训练模型 首先,从 [ModelScope](https://modelscope.cn/models/MooreThreadsSpeech/MooER-MTL-5K) 或 [HuggingFace](https://huggingface.co/mtspeech/MooER-MTL-5K) 下载我们提供的预训练模型 ```shell # 使用ModelScope git lfs clone https://modelscope.cn/models/MooreThreadsSpeech/MooER-MTL-5K # 使用HuggingFace git lfs clone https://huggingface.co/mtspeech/MooER-MTL-5K ``` 将下载后的文件放置在 `pretrained_models` 文件夹中。 ```shell cp MooER-MTL-5K/* pretrained_models ``` 然后,下载 [`Qwen2-7B-Instruct`](https://modelscope.cn/models/qwen/qwen2-7b-instruct) : ```shell # 使用ModelScope git lfs clone https://modelscope.cn/models/qwen/qwen2-7b-instruct # 使用HuggingFace git lfs clone https://huggingface.co/Qwen/Qwen2-7B-Instruct ``` 将下载后的文件放在 `pretrained_models/Qwen2-7B-Instruct` 文件夹中。 最后,请确保您下载的文件按照下面的文件结构放置。我们同时提供了每个文件的MD5码,请确保MD5码正确。**模型文件损坏或安放位置不正确会导致运行出错。** ```text ./pretrained_models/ |-- paraformer_encoder | |-- am.mvn # dc1dbdeeb8961f012161cfce31eaacaf | `-- paraformer-encoder.pth # 2ef398e80f9f3e87860df0451e82caa9 |-- asr | |-- adapter_project.pt # 2462122fb1655c97d3396f8de238c7ed | `-- lora_weights | |-- README.md | |-- adapter_config.json # 8a76aab1f830be138db491fe361661e6 | `-- adapter_model.bin # 0fe7a36de164ebe1fc27500bc06c8811 |-- ast | |-- adapter_project.pt # 65c05305382af0b28964ac3d65121667 | `-- lora_weights | |-- README.md | |-- adapter_config.json # 8a76aab1f830be138db491fe361661e6 | `-- adapter_model.bin # 12c51badbe57298070f51902abf94cd4 |-- asr_ast_mtl | |-- adapter_project.pt # 83195d39d299f3b39d1d7ddebce02ef6 | `-- lora_weights | |-- README.md | |-- adapter_config.json # 8a76aab1f830be138db491fe361661e6 | `-- adapter_model.bin # a0f730e6ddd3231322b008e2339ed579 |-- Qwen2-7B-Instruct | |-- model-00001-of-00004.safetensors # d29bf5c5f667257e9098e3ff4eec4a02 | |-- model-00002-of-00004.safetensors # 75d33ab77aba9e9bd856f3674facbd17 | |-- model-00003-of-00004.safetensors # bc941028b7343428a9eb0514eee580a3 | |-- model-00004-of-00004.safetensors # 07eddec240f1d81a91ca13eb51eb7af3 | |-- model.safetensors.index.json | |-- config.json # 8d67a66d57d35dc7a907f73303486f4e | |-- configuration.json # 040f5895a7c8ae7cf58c622e3fcc1ba5 | |-- generation_config.json # 5949a57de5fd3148ac75a187c8daec7e | |-- merges.txt # e78882c2e224a75fa8180ec610bae243 | |-- tokenizer.json # 1c74fd33061313fafc6e2561d1ac3164 | |-- tokenizer_config.json # 5c05592e1adbcf63503fadfe429fb4cc | |-- vocab.json # 613b8e4a622c4a2c90e9e1245fc540d6 | |-- LICENSE | `-- README.md |-- README.md `-- configuration.json ``` #### 2024/08/27更新 我们推出了新的模型*MooER-80K-v2*。您可以下载新的模型文件,并更换`pretrained_models`下的相关文件。 ```shell # use modelscope git lfs clone https://modelscope.cn/models/MooreThreadsSpeech/MooER-MTL-80K # use huggingface git lfs clone https://huggingface.co/mtspeech/MooER-MTL-80K ``` 新模型文件对应的MD5码为: ```text ./pretrained_models/ `-- asr |-- adapter_project.pt # af9022e2853f9785cab49017a18de82c `-- lora_weights |-- README.md |-- adapter_config.json # ad3e3bfe9447b808b9cc16233ffacaaf `-- adapter_model.bin # 3c22b9895859b01efe49b017e8ed6ec7 ``` ## 🏋️ 训练 ** 我们开源了MooER的 ***训练和推理代码***! 你可以参考这个[教程](tutorial/train.md) 来训练你自己的音频理解大模型和不同的任务,也可以基于我们开源的80k小时的模型来微调。** ## 🚀 推理 您可以使用下面的推理示例来尝试摩耳大模型的效果。 ```shell # 设置环境变量 export PYTHONIOENCODING=UTF-8 export LC_ALL=C export PYTHONPATH=$PWD/src:$PYTHONPATH # 执行推理脚本 python inference.py ``` 以上命令会调用一个多任务摩耳大模型,同时输出语音识别和语音翻译的结果。如果运行成功,您将在终端看到结果。 您还可以通过以下方式,指定您自己的音频文件路径或更改不同的模型配置: ```shell # 使用您自己的音频文件 python inference.py --wav_path /path/to/your_audio_file # 该脚本支持SCP文件。在SCP文件中,每一行的格式为: "uttid wav_path": # test1 my_test_audio1.wav # test2 my_test_audio2.wav # ... python inference.py --wav_scp /path/to/your_wav_scp # 指定语音识别模型,仅输出识别结果 python inference.py --task asr \ --cmvn_path pretrained_models/paraformer_encoder/am.mvn \ --encoder_path pretrained_models/paraformer_encoder/paraformer-encoder.pth \ --llm_path pretrained_models/Qwen2-7B-Instruct \ --adapter_path pretrained_models/asr/adapter_project.pt \ --lora_dir pretrained_models/asr/lora_weights \ --wav_path /path/to/your_audio_file # 指定语音翻译模型,仅输出中翻英结果 python inference.py --task ast \ --cmvn_path pretrained_models/paraformer_encoder/am.mvn \ --encoder_path pretrained_models/paraformer_encoder/paraformer-encoder.pth \ --llm_path pretrained_models/Qwen2-7B-Instruct \ --adapter_path pretrained_models/ast/adapter_project.pt \ --lora_dir pretrained_models/ast/lora_weights \ --wav_path /path/to/your_audio_file # 注意:当您使用多任务模型时,您需要指`--task ast` # 输出所有可用选项 python inference.py -h ``` 我们建议一次性识别的音频长度不要超过30秒,同时音频中包含的文字数量应少于500个字。另外,我们还建议在识别前先通过`ffmpeg`或`sox`将音频转换为16kHz 16bit单声道WAV格式。 ## 🎨 Gradio 演示 为了提供更好的使用体验,我们附带了一个基于Gradio的演示程序。您可以通过运行以下命令来使用: ```shell # 设置环境变量 export PYTHONPATH=$PWD/src:$PYTHONPATH # 运行多模态模型 python demo/app.py # 仅运行语音识别模型 python demo/app.py \ --task asr \ --adapter_path pretrained_models/asr/adapter_project.pt \ --lora_dir pretrained_models/asr/lora_weights # 仅运行语音翻译模型 python demo/app.py \ --task ast \ --adapter_path pretrained_models/ast/adapter_project.pt \ --lora_dir pretrained_models/ast/lora_weights ``` 您还可以根据需要指定`--server_port`, `--share`, `--server_name`等启动参数。 由于缺少HTTPS证书,您仅能使用HTTP访问演示网页。此时,现代浏览器会阻止您对麦克风的访问。为了绕过该问题,您需要手动进行设置。如果您使用的是Chrome浏览器,请在导航栏输入 `chrome://flags/#unsafely-treat-insecure-origin-as-secure`,在打开的页面中,将您想要访问的目标地址添加到白名单中。其它浏览器的设置方法请您自行查询相关解决方案。 使用该演示程序时,使用流式模型可以更快地获取识别、翻译结果。但请注意,流式模型会限制解码的beam大小为1,这可能会略微影响识别、翻译效果。 > 🤔 不知道如何运行Gradio? > > 💻 没有可用的机器? > > ⌛ 不想花时间安装相关环境? > > **☕ 点击这里可以体验 [我们提供的在线演示](https://mooer-speech.mthreads.com:10077/),该演示运行在摩尔线程S4000服务器上!** ## 📝 开源计划 - [x] 发布技术报告 - [x] 开源推理代码及5000小时数据预训练模型 - [x] 80,000小时数据预训练的语音识别模型 - [X] 开源训练代码 - [ ] 80,000小时数据预训练的语音翻译及多任务模型 - [ ] 基于大语言模型的音色保持语音翻译模型 ## 开源许可 摩耳的开源许可请参考[该文件](LICENSE.md). ## 🙏🏻 致谢 我们从 [FunASR](https://github.com/modelscope/FunASR) 中借鉴了语音编码器。 我们使用的大语言模型相关代码借鉴自 [Qwen2](https://github.com/QwenLM/Qwen2)。 我们的训练及推理代码是根据 [SLAM-LLM](https://github.com/X-LANCE/SLAM-LLM) 和 [wenet](https://github.com/wenet-e2e/wenet) 调整而来。 我们也从许多其它的开源仓库中获得了灵感,比如 [whisper](https://github.com/openai/whisper) 和 [SeamlessM4T](https://github.com/facebookresearch/seamless_communication)。 在此,我们想要感谢所有的论文作者和开源代码贡献者,感谢他们创新的想法和代码为我们提供的帮助。 ## 💖 引用 如果您喜欢摩耳,或觉得摩耳对您有用,请为我们的仓库点🌟并引用我们的工作: ```bibtex @article{liang2024mooer, title = {MooER: LLM-based Speech Recognition and Translation Models from Moore Threads}, author = {Zhenlin Liang, Junhao Xu, Yi Liu, Yichao Hu, Jian Li, Yajun Zheng, Meng Cai, Hua Wang}, journal = {arXiv preprint arXiv:2408.05101}, year = {2024} } ``` ## 📧 联系方式 如果您遇到了任何问题,请随时创建issue。 摩尔线程官方网站:**https://www.mthreads.com/**