Python开发学习之Python用三十行代码,打造一款简单的人工语音对话
小职 2021-06-09 来源 :Python之王 阅读 547 评论 0

摘要:本文主要介绍了Python开发学习之Python用三十行代码,打造一款简单的人工语音对话,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

本文主要介绍了Python开发学习之Python用三十行代码,打造一款简单的人工语音对话,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

1876年,亚历山大·格雷厄姆·贝尔(Alexander Graham Bell)发明了一种电报机,可以通过电线传输音频。托马斯·爱迪生(Thomas Edison)于1877年发明了留声机,这是第一台记录声音并播放声音的机器。

 

最早的语音识别软件之一是由Bells Labs在1952年编写的,只能识别数字。1985年,IBM发布了使用“隐马尔可夫模型”的软件,该软件可识别1000多个单词。

 

几年前,一个replace("?","")代码价值一个亿

 

如今,在Python中Tensorflow,Keras,Librosa,Kaldi和语音转文本API等多种工具使语音计算变得更加容易。

 

今天,我使用gtts和speech_recognition,教大家如何通过三十行代码,打造一款简单的人工语音对话。思路就是将语音变成文本,然后文本变成语音。

 

gtts

gtts是将文字转化为语音,但是需要在虚拟网络下使用。这个因为要接谷歌服务器。

 

具体gtts的官方文档:

 

下面,让我们看一段简单的的代码

 

from gtts import gTTS

 

def speak(audioString):

    print(audioString)

    tts = gTTS(text=audioString,)

    tts.save("audio.mp3")

    os.system("audio.mp3")

     

speak("Hi Runsen, what can I do for you?")

执行上面的代码,就可以生成一个mp3文件,播放就可以听到了Hi Runsen, what can I do for you?。这个MP3会自动弹出来的。

 

speech_recognition

speech_recognition用于执行语音识别的库,支持在线和离线的多个引擎和API。

 

speech_recognition具体官方文档

 

安装speech_recognition可以会出现错误,对此解决的方法是通过该网址安装对应的whl包

 

在官方文档中提供了具体的识别来自麦克风的语音输入的代码

 Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

 

 

下面就是 speech_recognition 用麦克风记录下你的话,这里我使用的是 recognize_google,speech_recognition 提供了很多的类似的接口。

 

import time

import speech_recognition as sr

 

# 录下来你讲的话

def recordAudio():

    # 用麦克风记录下你的话

    print("开始麦克风记录下你的话")

    r = sr.Recognizer()

    with sr.Microphone() as source:

        audio = r.listen(source)

    data = ""

    try:

        data = r.recognize_google(audio)

        print("You said: " + data)

    except sr.UnknownValueError:

        print("Google Speech Recognition could not understand audio")

    except sr.RequestError as e:

        print("Could not request results from Google Speech Recognition service; {0}".format(e))

    return data

 

if __name__ == '__main__':

    time.sleep(2)

    while True:

        data = recordAudio()

        print(data)

下面是我乱说的英语

 Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

 

 

对话

上面,我们实现了用麦克风记录下你的话,并且得到了对应的文本,那么下一步就是字符串的文本操作了,比如说how are you,那回答"I am fine”,然后将"I am fine”通过gtts是将文字转化为语音

 

# @Author:Runsen

# -*- coding: UTF-8 -*-

import speech_recognition as sr

from time import ctime

import time

import os

from gtts import gTTS

 

 

# 讲出来AI的话

def speak(audioString):

    print(audioString)

    tts = gTTS(text=audioString,)

    tts.save("audio.mp3")

    os.system("audio.mp3")

 

 

# 录下来你讲的话

def recordAudio():

    # 用麦克风记录下你的话

    r = sr.Recognizer()

    with sr.Microphone() as source:

        audio = r.listen(source)

 

    data = ""

    try:

        data = r.recognize_google(audio)

        print("You said: " + data)

    except sr.UnknownValueError:

        print("Google Speech Recognition could not understand audio")

    except sr.RequestError as e:

        print("Could not request results from Google Speech Recognition service; {0}".format(e))

 

    return data

 

 

# 自带的对话技能(逻辑代码:rules)

def jarvis():

    while True:

        data = recordAudio()

        print(data)

        if "how are you" in data:

            speak("I am fine")

        if "time" in data:

            speak(ctime())

        if "where is" in data:

            data = data.split(" ")

            location = data[2]

            speak("Hold on Runsen, I will show you where " + location + " is.")

            # 打开谷歌地址

            os.system("open -a Safari https://www.google.com/maps/place/" + location + "/&")

 

        if "bye" in data:

            speak("bye bye")

            break

 

 

if __name__ == '__main__':

    # 初始化

    time.sleep(2)

    speak("Hi Runsen, what can I do for you?")

 

    # 跑起

    jarvis()

 Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

 

当我说how are you?会弹出I am fine的mp3

 

 Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

 

当我说where is Chiana?会弹出Hold on Runsen, I will show you where China is.的MP3

 Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

 

 

同样也会弹出China的谷歌地图

 Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

 

 

本项目对应的Github

 

https://github.com/MaoliRUNsen/Simple-intelligent-voice-dialogue


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

Python开发学习之Python用三十行代码,打造一款简单的人工语音对话

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程