当前位置:   article > 正文

部署基于paddlespeech的语音识别功能_paddlespeech语音识别

paddlespeech语音识别

环境:本机windows系统,cuda版本11.1

paddlespeech要求(来源github

所以在anaconda中创建py3.9环境,关于gcc的安装还会碰到以下问题。

Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

所以我们去Microsoft C++ Build Tools - Visual Studio

下载visualstudio

anacoda中创建python环境

#在anaconda prompt中

conda create -n test python=3.7

conda activate py39

 请务必查看自己的cuda版本,才能安装对应版本的paddle

参考网站飞桨PaddlePaddle-源于产业实践的开源深度学习平台

所以按本机环境要求只能安装2.3的paddle版本

  1. #在anaconda prompt中先安装runner
  2. pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. pip install paddlepaddle-gpu==2.3.2.post111 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
  4. pip install paddlespeech -i https://pypi.tuna.tsinghua.edu.cn/simple

以上完成安装步骤。我们找到一个参考音频:

https://paddlespeech.bj.bcebos.com/PaddleAudio/ch_zh_mix.wav

然后使用代码的方式来运行测试用例:

  1. import paddle
  2. from paddlespeech.cli.asr import ASRExecutor
  3. import warnings
  4. warnings.filterwarnings("ignore")
  5. asr_executor = ASRExecutor()
  6. text = asr_executor(
  7. model='conformer_talcs',
  8. lang='zh_en',
  9. sample_rate=16000,
  10. config=None,
  11. ckpt_path=None,
  12. audio_file='./ch_zh_mix.wav',
  13. codeswitch=True,
  14. force_yes=False,
  15. device=paddle.get_device())
  16. print('ASR Result: \n{}'.format(text))

不出意外就会有一个bug:

AttributeError: module 'numpy' has no attribute 'complex'.

解决方法:降低numpy版本 或者更改源码

  1. 方法一:numpy 1.26.2 => 1.20
  2. 方法二:定位到使用complex的地方。本错误是在 constantq.py的1059
  3. 把这一行的dtype=np.complex改成dtype=np.complex128

解决上述问题后,会有一个新的问题:

declarative() got an unexpected keyword argument 'property'

解决方法:没有更好的解决方法,只能更改源码

  1. 这个bug可以定位到subsamping_rate文件中这是一个非py文件,搜索“property=True”可以找到五处,
  2. 把这五处的property=True全部删除

到这里就没有错误了

显示输出结果:

拓展:我们也希望能够实现语气识别,给输出的句子加上标点符号。这里就需要用到TextExecutor模块,更改代码为

  1. import paddle
  2. from paddlespeech.cli.asr import ASRExecutor
  3. from paddlespeech.cli.text import TextExecutor
  4. import warnings
  5. warnings.filterwarnings("ignore")
  6. asr_executor = ASRExecutor()
  7. text_punc = TextExecutor()
  8. text = asr_executor(
  9. model='conformer_talcs',
  10. lang='zh_en',
  11. sample_rate=16000,
  12. config=None,
  13. ckpt_path=None,
  14. audio_file='./ch_zh_mix.wav',
  15. codeswitch=True,
  16. force_yes=False,
  17. device=paddle.get_device())
  18. print('ASR Result: \n{}'.format(text))
  19. result2=text_punc (text,task='punc')
  20. print('TextExecutor Result: \n{}'.format(text))
  21. print(result2)

不出意外,这里又有一个新的bug:

ModuleNotFoundError: No module named 'paddle.nn.layer.layers'

这个问题源于paddlenlp的版本问题,目前安装paddlepaddle都会自动安装最新版paddlenlp,这样会导致paddlespeech在调用paddle的时候出现版本不兼容。

上图是panddlenlp的要求,可见paddlepaddle2.5之后的api大大更改了

解决方法:降低版本

  1. #palldenlp 2.6.1 => 2.5.2
  2. pip uninstall paddlenlp
  3. pip install paddlenlp==2.5.2

在pip的时候这里有会有一个新的bug:

ppdiffusers 0.19.3 requires paddlenlp>=2.6.0rc0, but you have paddlenlp 2.5.2 which is incompatible.

ppdiffusers是用于多模态的扩散模型,本项目压根用不到,所以不管也行。

于是这里就会有成功的输出:

如果想隐藏除了结果外的其他输出,推荐使用sys模块

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/540527
推荐阅读