阿里云通义千问开源两款语音基座模型分别是SenseVoice和CosyVoice

07-16 1133阅读

阿里巴巴近期发布了开源语音大模型项目FunAudioLLM,该项目包含了两个核心模型:SenseVoice和CosyVoice。可以精准多语言识别并且进行语音克隆。

SenseVoice:精准多语言识别与情感辨识

SenseVoice主要致力于高精度多语言语音识别、情感辨识和音频事件检测,支持超过50种语言的识别,其效果显著优于现有的Whisper模型,尤其在中文和粤语识别上提升超过50%。该模型不仅能够准确识别语音,还能辨别音乐、掌声、笑声、哭声、咳嗽和喷嚏等常见人机交互事件。多方面的测试显示,SenseVoice在情感辨识能力上也取得了行业领先的成果,能够检测到多种情感表现。

语音识别效果

我们在开源基准数据集(包括 AISHELL-1、AISHELL-2、Wenetspeech、Librispeech和Common Voice)上比较了SenseVoice与Whisper的多语言语音识别性能和推理效率。在中文和粤语识别效果上,SenseVoice-Small模型具有明显的效果优势。

阿里云通义千问开源两款语音基座模型分别是SenseVoice和CosyVoice

情感识别效果

由于目前缺乏被广泛使用的情感识别测试指标和方法,我们在多个测试集的多种指标进行测试,并与近年来Benchmark上的多个结果进行了全面的对比。所选取的测试集同时包含中文/英文两种语言以及表演、影视剧、自然对话等多种风格的数据,在不进行目标数据微调的前提下,SenseVoice能够在测试数据上达到和超过目前最佳情感识别模型的效果。

阿里云通义千问开源两款语音基座模型分别是SenseVoice和CosyVoice

同时,我们还在测试集上对多个开源情感识别模型进行对比,结果表明,SenseVoice-Large模型可以在几乎所有数据上都达到了最佳效果,而SenseVoice-Small模型同样可以在多数数据集上取得超越其他开源模型的效果。

阿里云通义千问开源两款语音基座模型分别是SenseVoice和CosyVoice

事件检测效果

尽管SenseVoice只在语音数据上进行训练,它仍然可以作为事件检测模型进行单独使用。我们在环境音分类ESC-50数据集上与目前业内广泛使用的BEATS与PANN模型的效果进行了对比。SenseVoice模型能够在这些任务上取得较好的效果,但受限于训练数据与训练方式,其事件分类效果专业的事件检测模型相比仍然有一定的差距。

阿里云通义千问开源两款语音基座模型分别是SenseVoice和CosyVoice

CosyVoice:自然语音生成的新标杆

CosyVoice则聚焦于自然语音生成,支持多语言、音色和情感控制,涵盖中文、英文、日文、粤语和韩语五种语言的生成。与传统语音生成模型相比,CosyVoice在生成效果上有显著提升。它仅需要3至10秒的原始音频,即可生成模拟音色,包含韵律和情感等细节,甚至能够实现跨语言的语音生成。

此外,CosyVoice还支持通过富文本或自然语言形式,对生成语音的情感和韵律进行细粒度控制,大大提升了生成语音在情感表现力上的细腻程度。

产品优势

  • 高度拟人化:采用阿里通义语音实验室自研的CosyVoice 生成式神经网络语音大模型算法,使生成的语音在语调、韵律、情感表达等方面达到超拟人程度。

  • 多样化音色选择:提供海量优质的音库资源,包括不同性别、年龄、方言以及各种特色声音,满足用户在不同场景下的个性化需求。无论是新闻播报的庄重严肃,还是故事讲述的情感丰富,都能轻松驾驭。

  • 实时高效合成:系统具有出色的响应速度和流式语音合成处理能力,无论是长篇文档还是短句指令,都能实现快速、准确的实时语音合成。

  • 支持富语言声音事件以及多情感的高拟人语音生成,例如笑声、语气词等,以及不同情感表现的高拟人语音生成。

  • 灵活应用广泛:适用于多种应用场景,如智能客服、有声读物、车载导航、教育辅导等,极大地拓宽了语音交互的可能性,提升用户体验的同时,也为企业智能化转型提供了强大支持。

    目前两个模型均可在 ModelSpace 和 HuggingFace 上找到并下载。

    我在Lab上按照 Github 二者的 README.md运行了。但是发现官方使用 Python 8 且 Pytorch都没用上 Ver 2,所以我直接照着requirements.txt 在默认 Python 10 的 Lab 环境上运行:

    SenseVoice

    jupyter notebook

    !pip install torch torchaudio modelscope huggingface huggingface_hub funasr numpy
    
    from funasr import AutoModel
    model_dir = "iic/SenseVoiceSmall"
    input_file = (
        "https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav"
    )
    model = AutoModel(model=model_dir,
                      vad_model="fsmn-vad",
                      vad_kwargs={"max_single_segment_time": 30000},
                      trust_remote_code=True, device="cuda:0")
    res = model.generate(
        input=input_file,
        cache={},
        language="zh", # "zn", "en", "yue", "ja", "ko", "nospeech"
        use_itn=False,
        batch_size_s=0,
    )
    print(res)
    

    CosyVoice

    jupyter notebook

    !pip install conformer deepspeed diffusers gdown gradio grpcio grpcio-tools hydra-core HyperPyYAML inflect librosa lightning matplotlib modelscope networkx omegaconf onnxruntime-gpu onnxruntime openai-whisper protobuf pydantic rich soundfile tensorboard torch torchaudio wget
    !apt-get install sox libsox-dev
    
    import os
    os.chdir('/content/CosyVoice')
    # SDK模型下载
    from modelscope import snapshot_download
    snapshot_download('iic/CosyVoice-300M', local_dir='pretrained_models/CosyVoice-300M')
    snapshot_download('iic/CosyVoice-300M-SFT', local_dir='pretrained_models/CosyVoice-300M-SFT')
    snapshot_download('iic/CosyVoice-300M-Instruct', local_dir='pretrained_models/CosyVoice-300M-Instruct')
    snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')
    
    !export PYTHONPATH=third_party/Matcha-TTS
    
    !pip install matcha-tts
    
    import os
    os.chdir('/content/CosyVoice')
    from cosyvoice.cli.cosyvoice import CosyVoice
    from cosyvoice.utils.file_utils import load_wav
    import torchaudio
    cosyvoice = CosyVoice('pretrained_models/CosyVoice-300M-SFT')
    # sft usage
    print(cosyvoice.list_avaliable_spks())
    output = cosyvoice.inference_sft('你好,我是通义生成式语音大模型,请问有什么可以帮您的吗?', '中文女')
    torchaudio.save('sft.wav', output['tts_speech'], 22050)
    cosyvoice = CosyVoice('pretrained_models/CosyVoice-300M')
    # zero_shot usage,  for Chinese/English/Japanese/Cantonese/Korean
    prompt_speech_16k = load_wav('zero_shot_prompt.wav', 16000)
    output = cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '希望你以后能够做的比我还好呦。', prompt_speech_16k)
    torchaudio.save('zero_shot.wav', output['tts_speech'], 22050)
    # cross_lingual usage
    prompt_speech_16k = load_wav('cross_lingual_prompt.wav', 16000)
    output = cosyvoice.inference_cross_lingual('And then later on, fully acquiring that company. So keeping management in line, interest in line with the asset that\'s coming into the family is a reason why sometimes we don\'t buy the whole thing.', prompt_speech_16k)
    torchaudio.save('cross_lingual.wav', output['tts_speech'], 22050)
    cosyvoice = CosyVoice('pretrained_models/CosyVoice-300M-Instruct')
    # instruct usage, support [laughter][breath]
    output = cosyvoice.inference_instruct('在面对挑战时,他展现了非凡的勇气与智慧。', '中文男', 'Theo \'Crimson\', is a fiery, passionate rebel leader. Fights with fervor for justice, but struggles with impulsiveness.')
    torchaudio.save('instruct.wav', output['tts_speech'], 22050)
    

    个人感觉平台更靠向ModelSpace。哎,学不完,根本学不完!

    我会定期在CSDN分享我的学习心得,项目经验和行业动态。如果你对某个领域感兴趣,或者想要了解更多技术干货,请关注我的账号,一起成长!

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]