使用windows自带的模块实现语音识别

658 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情

使用windows自带的SAPI实现语音识别成文字:

开发环境准备:

开发运行环境: win10 64位

Python版本:3.8

使用模块: speech

基础知识:

什么是SAPI?

SAPI是微软Speech API , 是微软公司推出的语音接口,而从WINXP开始,系统上就已经有语音识别的功能了;

Speech模块:

该模块的主要功能有:语音识别、将指定文本合成语音以及语音信号输出等。

安装Speech模块

  • 安装方式推荐有很多种,推荐使用pip;

pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

安装完pip,添加到环境变量后,就可以使用pip命令安装第三方模块

  • 安装speech模块命令:

pip install speech

在这里插入图片描述 目前speech的最新版本是0.5.2

  • 修改speech源码

因为这个智能语音模块依赖的是Python2.7版本的,而机器上目前的版本是python3.8,所以直接使用会报错,需要修改源码;

修改三个地方:

  • 59行 import thread 改成 import threading
  • 157行 print prompt 改成 print(prompt)
  • 最后一行 _eventthread = thread.start_new_thread(loop, ()) 修改为
      mythread = threading.Thread(target=loop)
        mythread.setDaemon(True)
        mythread.start()
  • 编码实现:

    使用speech.input() 接收语音并返回文字 使用speech.say() 播放语音

以下代码实现了通过语音识别到的信息,执行不同的操作:

import speech
import os

while True:
    say = speech.input() # 接收语音
    print(say)
    #speech.say("you said:"+say) #说话
    if 'hello' in say:
        speech.say("How are you?")
    elif say == "你好":
        speech.say("你也好!")
    elif '恐龙' in say:
        os.system('python xiaokonglong.py')
    elif '小猪' in say or '小朱' in say:
        os.system('python xiaozhupeiqi.py')

注意

此代码只支持windows系统,在第一次运行时,会先调起windows设置语音识别功能的配置;