• Stars
    star
    462
  • Rank 94,832 (Top 2 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pytorch实现的流式与非流式的自动语音识别框架,同时兼容在线和离线识别,目前支持Conformer、Squeezeformer、DeepSpeech2模型,支持多种数据增强方法。

python version GitHub forks GitHub Repo stars GitHub 支持系统

MASR流式与非流式语音识别项目

MASR是一款基于Pytorch实现的自动语音识别框架,MASR全称是神奇的自动语音识别框架(Magical Automatic Speech Recognition),当前为V2版本,如果想使用V1版本,请在这个分支r1.x。MASR致力于简单,实用的语音识别项目。可部署在服务器,Nvidia Jetson设备,未来还计划支持Android等移动设备。

如果熟悉PaddlePaddle,请优先使用:PPASR

欢迎大家扫码入QQ群讨论,或者直接搜索QQ群号758170167,问题答案为博主Github的IDyeyupiaoling

本项目使用的环境:

  • Anaconda 3
  • Python 3.8
  • Pytorch 1.13.1
  • Windows 10 or Ubuntu 18.04

项目快速了解

  1. 本项目支持流式识别模型deepspeech2conformersqueezeformerefficient_conformer,每个模型都支持流式识别和非流式识别,在配置文件中streaming参数设置。
  2. 本项目支持两种解码器,分别是集束搜索解码器ctc_beam_search和贪心解码器ctc_greedy,集束搜索解码器ctc_beam_search准确率更高。
  3. 下面提供了一系列预训练模型的下载,下载预训练模型之后,需要把全部文件复制到项目根目录,并执行导出模型才可以使用语音识别。

更新记录

  • 2023.01.28: 调整配置文件结构,支持efficient_conformer模型。
  • 2022.11: 正式发布最终级的V2版本。

视频讲解

这个是PPSAR的视频教程,项目是通用的,可以参考使用。

快速使用

这里介绍如何使用MASR快速进行语音识别,前提是要安装MASR,文档请看快速安装。执行过程不需要手动下载模型,全部自动完成。

  1. 短语音识别
from masr.predict import MASRPredictor

predictor = MASRPredictor(model_tag='conformer_streaming_fbank_aishell')

wav_path = 'dataset/test.wav'
result = predictor.predict(audio_data=wav_path, use_pun=False)
score, text = result['score'], result['text']
print(f"识别结果: {text}, 得分: {int(score)}")
  1. 长语音识别
from masr.predict import MASRPredictor

predictor = MASRPredictor(model_tag='conformer_streaming_fbank_aishell')

wav_path = 'dataset/test_long.wav'
result = predictor.predict_long(audio_data=wav_path, use_pun=False)
score, text = result['score'], result['text']
print(f"识别结果: {text}, 得分: {score}")
  1. 模拟流式识别
import time
import wave

from masr.predict import MASRPredictor

predictor = MASRPredictor(model_tag='conformer_streaming_fbank_aishell')

# 识别间隔时间
interval_time = 0.5
CHUNK = int(16000 * interval_time)
# 读取数据
wav_path = 'dataset/test.wav'
wf = wave.open(wav_path, 'rb')
data = wf.readframes(CHUNK)
# 播放
while data != b'':
    start = time.time()
    d = wf.readframes(CHUNK)
    result = predictor.predict_stream(audio_data=data, use_pun=False, is_end=d == b'')
    data = d
    if result is None: continue
    score, text = result['score'], result['text']
    print(f"【实时结果】:消耗时间:{int((time.time() - start) * 1000)}ms, 识别结果: {text}, 得分: {int(score)}")
# 重置流式识别
predictor.reset_stream()

模型下载

  1. WenetSpeech (10000小时) 的预训练模型列表:
使用模型 是否为流式 预处理方式 语言 测试集字错率 下载地址
conformer True fbank 普通话
  1. WenetSpeech (10000小时)+中文语音数据集 (3000+小时) 的预训练模型列表:
使用模型 是否为流式 预处理方式 语言 测试集字错率 下载地址
conformere True fbank 普通话 0.03179(aishell_test)
0.16722(test_net)
0.20317(test_meeting)
点击下载
  1. AIShell (179小时) 的预训练模型列表:
使用模型 是否为流式 预处理方式 语言 测试集字错率 下载地址
squeezeformer True fbank 普通话 0.04137 点击下载
conformer True fbank 普通话 0.04491 点击下载
efficient_conformer True fbank 普通话 0.04073 点击下载
deepspeech2 True fbank 普通话 0.06907 点击下载
  1. Librispeech (960小时) 的预训练模型列表:
使用模型 是否为流式 预处理方式 语言 测试集词错率 下载地址
squeezeformer True fbank 英文 0.09715 点击下载
conformer True fbank 英文 0.09265 点击下载
efficient_conformer True fbank 英文 点击下载
deepspeech2 True fbank 英文 0.19423 点击下载

说明:

  1. 这里字错率或者词错率是使用eval.py程序并使用集束搜索解码ctc_beam_search方法计算得到的。
  2. 没有提供预测模型,需要把全部文件复制到项目的根目录下,执行export_model.py导出预测模型。
  3. 由于算力不足,这里只提供了流式模型,但全部模型都支持流式和非流式的,在配置文件中streaming参数设置。

有问题欢迎提 issue 交流

文档教程

相关项目

打赏作者


打赏一块钱支持一下作者

打赏作者

参考资料

More Repositories

1

PPASR

基于PaddlePaddle实现端到端中文语音识别,从入门到实战,超简单的入门案例,超实用的企业项目。支持当前最流行的DeepSpeech2、Conformer、Squeezeformer模型
Python
699
star
2

PaddlePaddle-DeepSpeech

基于PaddlePaddle实现的语音识别,中文语音识别。项目完善,识别效果好。支持Windows,Linux下训练和预测,支持Nvidia Jetson开发板预测。
Python
583
star
3

VoiceprintRecognition-Pytorch

This project uses a variety of advanced voiceprint recognition models such as EcapaTdnn, ResNetSE, ERes2Net, CAM++, etc. It is not excluded that more models will be supported in the future. At the same time, this project also supports MelSpectrogram, Spectrogram data preprocessing methods
Python
503
star
4

Whisper-Finetune

Fine-tune the Whisper speech recognition model to support training without timestamp data, training with timestamp data, and training without speech data. Accelerate inference and support Web deployment, Windows desktop deployment, and Android deployment
C
443
star
5

LearnPaddle

PaddlePaddle V2版本系列教程,博客专栏:
Python
359
star
6

VoiceprintRecognition-Tensorflow

使用Tensorflow实现声纹识别
Python
267
star
7

AudioClassification-Pytorch

The Pytorch implementation of sound classification supports EcapaTdnn, PANNS, TDNN, Res2Net, ResNetSE and other models, as well as a variety of preprocessing methods.
Python
207
star
8

VoiceprintRecognition-PaddlePaddle

本项目使用了EcapaTdnn、ResNetSE、ERes2Net、CAM++等多种先进的声纹识别模型,同时本项目也支持了MelSpectrogram、Spectrogram、MFCC、Fbank等多种数据预处理方法
Python
163
star
9

LearnPaddle2

PaddlePaddle Fluid 版本系列教程,CSDN博客专栏:
Python
153
star
10

ClassificationForAndroid

在Android使用深度学习模型实现图像识别,本项目提供了多种使用方式,使用到的框架如下:Tensorflow Lite、Paddle Lite、MNN、TNN
C++
144
star
11

VoiceprintRecognition-Keras

基于Kersa实现的声纹识别模型
Python
103
star
12

PP-YOLOE

PaddlePaddle实现的目标检测模型PP-YOLOE
Python
99
star
13

Pytorch-MTCNN

基于Pytorch实现的MTCNN模型,人脸检测,人脸关键点检测。
Python
96
star
14

PunctuationModel

中文标点符号模型,可以给文本添加标点符号。
Python
88
star
15

Pytorch-MobileFaceNet

Pytorch实现的人脸识别明细MobileFaceNet模型,在预测使用MTCNN检测人脸,然后使用MobileFaceNet模型识别。
Python
83
star
16

FaceDataset

制作亚洲人脸数据集
Python
83
star
17

AudioClassification-Tensorflow

基于Tensorflow实现声音分类,博客地址:
Python
82
star
18

AudioClassification-PaddlePaddle

基于PaddlePaddle实现的音频分类,支持EcapaTdnn、PANNS、TDNN、Res2Net、ResNetSE等各种模型,还有多种预处理方法
Python
71
star
19

SpeechEmotionRecognition-Pytorch

基于Pytorch实现的语音情感识别
Python
54
star
20

PaddlePaddle-MobileFaceNets

PaddlePaddle实现的人脸识别模型MobileFaceNets,在预测的是使用MTCNN检测人脸,然后MobileFaceNets模型识别。
Python
53
star
21

PaddlePaddle-SSD

基于PaddlePaddle实现的SSD,包括MobileNetSSD,MobileNetV2SSD,VGGSSD,ResNetSSD
Python
53
star
22

Tensorflow-FaceRecognition

基于MTCNN和MobileFaceNet实现的人脸识别,提供三种预测方式,满足各种需求 。
Python
50
star
23

PaddlePaddle-CrowdNet

基于PaddlePaddle实现的人流密度识别模型CrowdNet
Python
42
star
24

FaceKeyPointsMask

人脸检测、口罩识别、关键检测
Java
37
star
25

SpeechEmotionRecognition-PaddlePaddle

语音感情识别
Python
26
star
26

PaddlePaddle-MTCNN

基于PaddlePaddle复现的MTCNN人脸检测模型
Python
24
star
27

PaddlePaddleCourse

《PaddlePaddle从入门到实战》源码
Python
22
star
28

ReinforcementLearning

强化学习教程
Python
22
star
29

PaddlePaddle-CRNN

基于PaddlePaddle2.0实现的CRNN模型,文字识别
Python
21
star
30

Age-Gender-MXNET

MXNET实现的年龄性别识别,训练了超大数据集得到的模型。
Python
19
star
31

ChangeHumanBackground

人物更换背景
Java
18
star
32

BookSource

《深度学习应用实战之PaddlePaddle》的源码
Python
18
star
33

Chinese-LLM-Chat

大语言模型微调的项目,包含了使用QLora微调ChatGLM和LLama
Python
16
star
34

CameraXApp

CameraX实现的相机
Kotlin
12
star
35

yeyupiaoling

8
star
36

Pytorch-PPO

基于Pytorch实现的PPO强化学习模型,支持训练各种游戏,如超级马里奥,雪人兄弟,魂斗罗等等。
Python
7
star
37

VITS-Pytorch

本项目是基于Pytorch的语音合成项目,使用的是VITS,VITS是一种语音合成方法,这种时端到端的模型使用起来非常简单,不需要文本对齐等太复杂的流程,直接一键训练和生成,大大降低了学习门槛。
Python
6
star
38

PaddlePaddle-Classification

PaddlePaddle实现的图像分类模型
Python
5
star
39

PaddlePaddle-OCR

基于PaddlePaddle实现的OCR,包括CRNN和Attention模型
Python
3
star
40

DetectionForAndroid

C++
3
star
41

VITS-PaddlePaddle

本项目是基于PaddlePaddle的语音合成项目,使用的是VITS,VITS是一种语音合成方法,这种时端到端的模型使用起来非常简单,不需要文本对齐等太复杂的流程,直接一键训练和生成,大大降低了学习门槛。
Python
3
star
42

NettySendPhoto

在Android中使用Netty互相发送图片和文字
Java
2
star
43

YeAudio

Python的音频工具
Python
2
star
44

yeyupiaoling.github.io

夜雨飘零的个人博客
HTML
1
star