第三篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:pyttsx3实现语音助手经典案例_语音助手实现

定义语音助手的回应函数

def respond(text):
print(“助手:”, text)
engine.say(text)
engine.runAndWait()

测试自定义语音属性

respond(“你好!我是语音助手。”)

恢复默认语音属性

engine.setProperty(‘rate’, rate) # 恢复默认语速
engine.setProperty(‘volume’, volume) # 恢复默认音量
engine.setProperty(‘pitch’, pitch) # 恢复默认音调

测试恢复默认语音属性

respond(“你好!我是语音助手。”)


在这个示例中,我们首先创建了一个 `pyttsx3` 的语音合成引擎对象。然后,通过 `getProperty` 方法获取当前的语音属性,包括语速、音量和音调。接下来,使用 `setProperty` 方法设置新的语音属性,例如将语速设置为150,音量设置为0.8,音调设置为1.2。然后,定义了一个回应函数 `respond`,该函数会打印回应文本并使用语音合成引擎进行语音输出。


在示例中,我们先测试了使用自定义语音属性的回应,然后恢复了默认的语音属性,并再次进行了回应测试。


你可以根据需要调整语音属性的值,以使语音更加自然和适合用户的喜好。请注意,具体的语音属性值可能因系统和语音引擎而异。你可以尝试不同的值来找到最适合的设置。


### 六、多语言支持示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/a23ebc29748c4f3fb171db4b48b11259.jpg)  
 `pyttsx3` 支持多种语言和语音引擎,你可以通过设置 `setProperty` 方法来切换语言,从而实现多语言支持的语音助手。以下是一个示例代码:



import pyttsx3

创建语音合成引擎对象

engine = pyttsx3.init()

获取当前语音属性

voices = engine.getProperty(‘voices’)

打印可用的语音列表

print(“可用的语音列表:”)
for voice in voices:
print(“名称:”, voice.name)
print(“ID:”, voice.id)
print(“语言:”, voice.languages)
print(“性别:”, voice.gender)
print(“”)

设置新的语音属性(切换语言)

engine.setProperty(‘voice’, voices[1].id) # 设置语音为第二个可用语音

定义语音助手的回应函数

def respond(text):
print(“助手:”, text)
engine.say(text)
engine.runAndWait()

测试多语言支持

respond(“Hello! I am a multilingual voice assistant.”)
respond(“你好!我是一个多语言语音助手。”)

恢复默认语音属性(切换回默认语言)

engine.setProperty(‘voice’, voices[0].id) # 设置语音为第一个可用语音

测试恢复默认语音属性

respond(“Hello! I am a multilingual voice assistant.”)
respond(“你好!我是一个多语言语音助手。”)


在这个示例中,我们首先创建了一个 `pyttsx3` 的语音合成引擎对象,并使用 `getProperty` 方法获取当前可用的语音列表。然后,我们打印了每个语音的名称、ID、语言和性别等信息。


接下来,使用 `setProperty` 方法将语音属性设置为第二个可用语音,以切换语言。你可以根据需要选择其他可用的语音。


然后,定义了一个回应函数 `respond`,该函数会打印回应文本并使用语音合成引擎进行语音输出。


在示例中,我们先测试了使用第二个可用语音的回应,然后恢复了默认的语音属性,再次进行了回应测试。


你可以根据需要选择合适的语音,以实现多语言支持的语音助手。请注意,可用的语音和语言取决于你的系统和安装的语音引擎。


### 七、语音控制应用程序示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/d2452facbed346edbdebbaa50b22d693.jpg)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a353090d56b44818bb580b042981266c.jpg)要创建一个可以通过语音控制的应用程序,你可以结合使用 `pyttsx3` 和其他库和框架来实现不同的功能。下面是一个示例代码,演示了如何使用 `pyttsx3` 和 `pyautogui` 库来实现语音控制鼠标和键盘:



import pyttsx3
import speech_recognition as sr
import pyautogui

创建语音合成引擎对象

engine = pyttsx3.init()

创建语音识别器对象

recognizer = sr.Recognizer()

定义语音助手的回应函数

def respond(text):
print(“助手:”, text)
engine.say(text)
engine.runAndWait()

定义语音控制函数

def voice_control():
with sr.Microphone() as source:
print(“请说话…”)
audio = recognizer.listen(source)

    try:
        # 使用语音识别器将语音转换为文本
        text = recognizer.recognize_google(audio, language='zh-CN')
        print("你说:", text)

        # 根据识别到的文本执行相应的操作
        if "向上" in text:
            pyautogui.move(0, -100, duration=0.5)  # 向上移动鼠标
        elif "向下" in text:
            pyautogui.move(0, 100, duration=0.5)  # 向下移动鼠标
        elif "向左" in text:
            pyautogui.move(-100, 0, duration=0.5)  # 向左移动鼠标
        elif "向右" in text:
            pyautogui.move(100, 0, duration=0.5)  # 向右移动鼠标
        elif "点击" in text:
            pyautogui.click()  # 点击鼠标左键
        elif "退出" in text:
            respond("再见!")
            return
        else:
            respond("抱歉,我无法理解你的指令。")

    except sr.UnknownValueError:
        respond("抱歉,无法识别你说的话。")
    except sr.RequestError:
        respond("抱歉,无法连接到语音识别服务。")

# 继续监听语音输入
voice_control()

启动语音控制

respond(“你好!我是语音助手。请告诉我你想要做什么。”)
voice_control()


在这个示例中,我们首先创建了一个 `pyttsx3` 的语音合成引擎对象和一个 `speech_recognition` 的语音识别器对象。然后,定义了一个回应函数 `respond`,该函数会打印回应文本并使用语音合成引擎进行语音输出。


接下来,定义了一个语音控制函数 `voice_control`,该函数使用语音识别器监听麦克风输入,并将语音转换为文本。根据识别到的文本,执行相应的操作,例如移动鼠标、点击鼠标等。


在示例中,我们定义了一些简单的指令,如 “向上”、“向下”、“向左”、“向右”、“点击” 等。你可以根据需要扩展指令和相应的操作。


最后,启动语音控制,语音助手会打招呼并等待你的指令。你可以说出相应的指令,语音助手会执行对应的操作。


请注意,此示例仅演示了如何结合 `pyttsx3` 和 `pyautogui` 库实现语音控制鼠标和键盘的功能。根据你的需求,你可以结合其他库和框架来实现更复杂的语音控制应用程序。


### 八、文本转语音通知示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/88df57d944f14a1ab86aed3631b16181.jpg)  
 `pyttsx3` 库可以将文本转换为语音,实现通知功能。下面是一个示例代码,演示了如何使用 `pyttsx3` 将文本内容转换为语音并进行播放:



import pyttsx3

创建语音合成引擎对象

engine = pyttsx3.init()

定义文本转语音函数

def text_to_speech(text):
engine.say(text)
engine.runAndWait()

定义通知函数

def notify(message):
print(“通知:”, message)
text_to_speech(message)

示例用法

notify(“这是一条通知消息。”)
notify(“你的日程安排已更新。”)
notify(“以下是今天的新闻摘要:”)
notify(“这是一条很长的通知消息,可以包含多个句子和段落。”)

关闭语音合成引擎

engine.stop()


在这个示例中,我们首先创建了一个 `pyttsx3` 的语音合成引擎对象。然后,定义了一个文本转语音函数 `text_to_speech`,该函数使用语音合成引擎将文本转换为语音并进行播放。


接下来,定义了一个通知函数 `notify`,该函数接受一个文本消息作为参数,并打印通知消息并通过语音播放。


在示例中,我们使用 `notify` 函数演示了几个通知消息的例子。你可以根据需要调用 `notify` 函数,将不同的文本内容转换为语音进行通知。


最后,我们通过调用 `engine.stop()` 来关闭语音合成引擎。


请注意,使用 `pyttsx3` 进行文本转语音时,可以根据需要设置语音的属性,如语速、音量等。你可以使用 `engine.setProperty` 方法来设置这些属性。例如,`engine.setProperty('rate', 150)` 可以设置语速为 150 字符每分钟。


### 九、语音交互界面示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/94701e7c8b634539bb9507900c49e257.jpg)要创建一个交互式的语音界面,可以结合使用 `pyttsx3`、`pyaudio` 和 `speech_recognition` 等库来实现语音输入和输出的功能。下面是一个示例代码,演示了如何创建一个简单的语音交互界面:



import pyttsx3
import speech_recognition as sr

创建语音合成引擎对象

engine = pyttsx3.init()

创建语音识别器对象

recognizer = sr.Recognizer()

定义语音助手的回应函数

def respond(text):
print(“助手:”, text)
engine.say(text)
engine.runAndWait()

定义语音交互函数

def voice_interaction():
with sr.Microphone() as source:
print(“请说话…”)
audio = recognizer.listen(source)

    try:
        # 使用语音识别器将语音转换为文本
        text = recognizer.recognize_google(audio, language='zh-CN')
        print("你说:", text)

        # 根据用户输入的文本进行相应的回应
        if "你好" in text:
            respond("你好!有什么我可以帮助你的吗?")
        elif "时间" in text:
            # 这里可以调用其他库或函数获取当前时间并进行回应
            respond("现在是晚上8点。")
        elif "退出" in text:
            respond("再见!")
            return
        else:
            respond("抱歉,我无法理解你的指令。")

    except sr.UnknownValueError:
        respond("抱歉,无法识别你说的话。")
    except sr.RequestError:
        respond("抱歉,无法连接到语音识别服务。")

# 继续语音交互
voice_interaction()

启动语音交互

respond(“你好!我是语音助手。有什么我可以帮助你的吗?”)
voice_interaction()


在这个示例中,我们首先创建了一个 `pyttsx3` 的语音合成引擎对象和一个 `speech_recognition` 的语音识别器对象。然后,定义了一个回应函数 `respond`,该函数会打印回应文本并使用语音合成引擎进行语音输出。


接下来,定义了一个语音交互函数 `voice_interaction`,该函数使用语音识别器监听麦克风输入,并将语音转换为文本。根据用户输入的文本,执行相应的回应。


在示例中,我们定义了一些简单的指令,如 “你好” 和 “时间”。根据用户的指令,语音助手会进行相应的回应。你可以根据需要扩展指令和相应的操作。


最后,启动语音交互,语音助手会打招呼并等待用户的指令。你可以通过语音与语音助手进行交互。


请注意,这个示例代码只是一个简单的交互式语音界面的演示。你可以根据自己的需求和应用场景,扩展和定制这个代码,结合其他库和框架实现更复杂的语音交互功能。


### 十、实现更复杂交互界面示例代码


![在这里插入图片描述](https://img-blog.csdnimg.cn/1458c1dce8874df2831f60f9e3978e17.jpg)当扩展和定制语音交互功能时,你可以根据自己的需求和应用场景,结合其他库和框架来实现更复杂的功能。以下是一个示例代码,展示了如何使用 `pyttsx3`、`speech_recognition` 和 `wikipedia` 库来创建一个语音交互的维基百科助手:



import pyttsx3
import speech_recognition as sr
import wikipedia

创建语音合成引擎对象

engine = pyttsx3.init()

创建语音识别器对象

recognizer = sr.Recognizer()

定义语音助手的回应函数

def respond(text):
print(“助手:”, text)
engine.say(text)
engine.runAndWait()

定义语音交互函数

def voice_interaction():
with sr.Microphone() as source:
print(“请说话…”)
audio = recognizer.listen(source)

    try:
        # 使用语音识别器将语音转换为文本
        text = recognizer.recognize_google(audio, language='zh-CN')
        print("你说:", text)

        # 根据用户输入的文本进行相应的回应
        if "你好" in text:
            respond("你好!有什么我可以帮助你的吗?")
        elif "维基百科" in text:
            query = text.replace("维基百科", "").strip()
            try:
                # 使用维基百科库获取相关信息
                summary = wikipedia.summary(query, sentences=2)
                respond(summary)
            except wikipedia.exceptions.DisambiguationError as e:
                respond("请提供更具体的查询内容。")
            except wikipedia.exceptions.PageError as e:
                respond("抱歉,找不到相关信息。")
        elif "退出" in text:
            respond("再见!")
            return
        else:
            respond("抱歉,我无法理解你的指令。")

    except sr.UnknownValueError:
        respond("抱歉,无法识别你说的话。")
    except sr.RequestError:
        respond("抱歉,无法连接到语音识别服务。")

# 继续语音交互
voice_interaction()

启动语音交互

respond(“你好!我是维基百科助手。有什么我可以帮助你的吗?”)
voice_interaction()




如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费**学习**大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。



### 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

### 二、学习软件



工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)



### 三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

![](https://img-blog.csdnimg.cn/img_convert/eec417a3d4d977b313558a11d3c13e43.png)



### 四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://img-blog.csdnimg.cn/img_convert/ec690501ea1dbe2cb209cbf4013c2477.png)  

![](https://img-blog.csdnimg.cn/img_convert/3eaeaa6747419c9d86c72e0d10d0a6a2.png)



### 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。



![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)



### 五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

你可能感兴趣的:(程序员,python,语音识别,开发语言)