TensorFlowASR :zap:
几乎是最先进的TensorFlow 2自动语音识别
TensorFlowASR实现了一些自动语音识别架构,如DeepSpeech2、Jasper、RNN Transducer、ContextNet、Conformer等。这些模型可以转换为TFLite,以减少内存和计算,便于部署 :smile:
有哪些新变化?
目录
:yum: 支持的模型
基线模型
- 转导器模型(使用RNNT损失进行训练的端到端模型,目前支持Conformer、ContextNet、Streaming Transducer)
- CTC模型(使用CTC损失进行训练的端到端模型,目前支持DeepSpeech2、Jasper)
出版物
- Conformer转导器(参考:https://arxiv.org/abs/2005.08100) 请参阅 examples/models/transducer/conformer
- ContextNet(参考:http://arxiv.org/abs/2005.03191) 请参阅 examples/models/transducer/contextnet
- RNN转导器(参考:https://arxiv.org/abs/1811.06621) 请参阅 examples/models/transducer/rnnt
- Deep Speech 2(参考:https://arxiv.org/abs/1512.02595) 请参阅 examples/models/ctc/deepspeech2
- Jasper(参考:https://arxiv.org/abs/1904.03288) 请参阅 examples/models/ctc/jasper
安装
为了进行训练和测试,您应该使用git clone
来安装其他作者提供的必要包(ctc_decoders
, rnnt_loss
等)
从源代码安装(推荐)
git clone https://github.com/TensorSpeech/TensorFlowASR.git
cd TensorFlowASR
# Tensorflow 2.x(2.x.x >= 2.5.1版本)
pip3 install ".[tf2.x]" # 或者 ".[tf2.x-gpu]"
对于anaconda3:
conda create -y -n tfasr tensorflow-gpu python=3.8 # 如果使用CPU,则安装tensorflow,这可以确保conda安装所有tensorflow的依赖项
conda activate tfasr
pip install -U tensorflow-gpu # 升级到最新版本的tensorflow
git clone https://github.com/TensorSpeech/TensorFlowASR.git
cd TensorFlowASR
# Tensorflow 2.x(2.x.x >= 2.5.1版本)
pip3 install ".[tf2.x]" # 或者 ".[tf2.x-gpu]"
通过PyPi安装
# Tensorflow 2.x(2.x >= 2.3版本)
pip3 install "TensorFlowASR[tf2.x]" # 或 pip3 install "TensorFlowASR[tf2.x-gpu]"
开发环境安装
git clone https://github.com/TensorSpeech/TensorFlowASR.git
cd TensorFlowASR
pip3 install -e ".[dev]"
pip3 install -e ".[tf2.x]" # 或 ".[tf2.x-gpu]" 或 ".[tf2.x-apple]" 用于苹果M1机器
苹果硅片安装
由于tensorflow-text尚未为苹果硅片构建,我们需要从 sun1638650145/Libraries-and-Extensions-for-TensorFlow-for-Apple-Silicon安装预构建的轮文件
git clone https://github.com/TensorSpeech/TensorFlowASR.git
cd TensorFlowASR
pip3 install -e "." # 或者 pip3 install -e ".[dev]进行开发 # 或者从PyPi安装 pip3 install "TensorFlowASR[dev]"
pip3 install tensorflow~=2.14.0 # 如果需要更换小版本
在安装了TensorFlowASR并使用上面的tensorflow之后执行以下操作:
TF_VERSION="$(python3 -c 'import tensorflow; print(tensorflow.__version__)')" && \
TF_VERSION_MAJOR="$(echo $TF_VERSION | cut -d'.' -f1,2)" && \
PY_VERSION="$(python3 -c 'import platform; major, minor, patch = platform.python_version_tuple(); print(f"{major}{minor}");')" && \
URL="https://github.com/sun1638650145/Libraries-and-Extensions-for-TensorFlow-for-Apple-Silicon" && \
pip3 install "${URL}/releases/download/v${TF_VERSION_MAJOR}/tensorflow_text-${TF_VERSION_MAJOR}.0-cp${PY_VERSION}-cp${PY_VERSION}-macosx_11_0_arm64.whl"
在容器中运行
docker-compose up -d
训练及测试教程
- 关于训练,请阅读 tutorial_training
- 关于测试,请阅读 tutorial_testing
注意:Keras内置的训练使用无限数据集,这避免了可能的最后一个部分批次。
请参阅 examples 以获取一些预定义的ASR模型和结果
特征提取
扩展
请参阅 augmentations
TFLite转换
在转换为tflite之后,tflite模型类似于一个函数,可以直接从 音频信号 转换为 文字和标记
预训练模型
请访问 drive
语料来源
英语
名称 | 来源 | 小时数 |
---|---|---|
LibriSpeech | LibriSpeech | 970小时 |
Common Voice | https://commonvoice.mozilla.org | 1932小时 |
越南语
名称 | 来源 | 小时数 |
---|---|---|
Vivos | https://ailab.hcmus.edu.vn/vivos | 15小时 |
InfoRe Technology 1 | InfoRe1 (密码:BroughtToYouByInfoRe) | 25小时 |
InfoRe Technology 2 (用于VLSP2019) | InfoRe2 (密码:BroughtToYouByInfoRe) | 415小时 |
如何贡献
- fork这个项目
- 安装开发环境
- 创建一个分支
- 提交一个pull request到这个仓库
参考及致谢
- NVIDIA OpenSeq2Seq Toolkit
- https://github.com/noahchalifour/warp-transducer
- Sequence Transduction with Recurrent Neural Network
- End-to-End Speech Processing Toolkit in PyTorch
- https://github.com/iankur/ContextNet
联系方式
Huy Le Nguyen