利用下面的博客教程实现语音识别:

《这一篇就够了 python语音识别指南终极版》链接:https://blog.csdn.net/j2IaYU7Y/article/details/79878310

首先感谢这篇文章???的博主写了一个对新手来说很友好的语音识别教程,本人花了接近一天的时间来实现整个过程以此了解以下语音识别的基本原理。


补充原因:

对小白来说,有的地方写的有一些简略,在实现上可能会不知所措浪费一些时间,所以这篇博客是在终极版博客提出的基础上加以补充,帮助小白更迅速的入坑)


几个注意点:

1.笔者用的是pycharm,所以我在cmd命令行中输入了pip安装完SpeechRecognition后,在pycharm中发现仍然没有作用,但是在cmd中运行python,import speech_recognition as sr没有问题,原教程如图:

最后我发现在pycharm中与电脑中的python两个解释器路径不同,即在pycharm的File->Settings中找到如下图的Project Interpreter,你可以直接在这个解释器中添加你所需要的库,点击右边绿色“+”号,输入关键包即可下载添加。最后在pycharm中也能正常import speech_recognition as sr 了。

2.在教程中,有这样一步:

这个r是啥???经过查阅资料,在调用上面语句前这样实现:r = sr.Recognizer()

3.在实现这一步操作时

笔者遇到了FileNotFoundError这样的问题:

笔者将harvard.wav文件放在了解释器的会话目录中,但是仍没有找到wav文件的路径,所以我的解决办法是世界把文件路径换成绝对路径,如果绝对路径中有中文符,则在前面添加一个‘r’即可正确实现,如:

>>>harvard = sr.AudioFile('harvard.wav')#原教程中的写法

>>>harvard = sr.AudioFile(r'C:\Users\16616\PycharmProjects\hello\venv\Scripts\harvard.wav')
#绝对路径的写法

以上便是我遇到的比较棘手的问题,在此给出通过原教程实现wav转文字和语音说话转文字的代码:

wav文件转文字:

在pycharm中新建python文件:将代码拷贝进去运行:

import speech_recognition as sr

def wav2txt():
    flag = 0
    while flag == 0 :#设置while爬虫,是因为google网站经常拦截访问
        try:
            r=sr.Recognizer()
            #print("yes")
            #r.recognize_google()#默认识别英文,识别其他语言可以设置参数
            harvard = sr.AudioFile(r'C:\Users\16616\PycharmProjects\hello\venv\Scripts\harvard.wav')#括号里第一个r是转义,我的应该是绝对路径里包含中文
            with harvard as source:
                audio = r.record(source)
                print("translating flie.wav to txt...")
            print("success! flie.wav:"+r.recognize_google(audio))
            flag=1
        except:
            flag=0
            print("failure...")#被网站拦截了
wav2txt()

运行结果如下:

为什么设置while循环的原因(包括下面的语音识别转文字),是经常会出现这个问题:

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

出现这种原因代表远程过于频繁,所以远程怀疑是恶意攻击,设置while循环一直访问(注意不要用递归访问,当次数增多,很容易发生栈溢出),总会成功一次。

语音识别转文字:

import speech_recognition as sr

def voice2txt():
    flag=0;
    r = sr.Recognizer()
    mic = sr.Microphone()

    while flag == 0:
        try:
            with mic as source:
                r.adjust_for_ambient_noise(source)  # 处理噪音
                print("now,say something have a try:")
                audio = r.listen(source)
            print("you just said:"+r.recognize_google(audio,None,"zh-CN",False))
            flag =1
        except:
            flag = 0;
            print("sorry, google website can't translate your voice...")

voice2txt()

实现结果如下:

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐