【python的魅力】:教你如何用几行代码实现文本语音识别

2024-06-04 2101阅读

文章目录

    • 引言
      • 一、运行效果
      • 二、文本转换为语音
        • 2.1 使用pyttsx3
        • 2.2 使用SAPI实现文本转换语音
        • 2.3 使用 SpeechLib实现文本转换语音
        • 三、语音转换为文本
          • 3.1 使用 PocketSphinx实现语音转换文本

            引言

            语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相应的文字和文字转换为语音。

            一、运行效果

            Python语音识别

            二、文本转换为语音

            2.1 使用pyttsx3

            pyttsx3 是一个流行的 Python 第三方库,用于实现文本到语音(TTS)的转换。这个库支持多种操作系统,包括 Windows、Linux 和 macOS,并且可以在没有互联网连接的情况下工作,因为它使用的是计算机上安装的本地语音引擎。

            主要特点:

            • 跨平台:可以在不同的操作系统上运行。
            • 离线工作:不依赖于互联网连接。
            • 多种语音和语言:支持多种语音和语言选项。
            • 自定义设置:允许用户调整语速、音量和语调等参数。
            • 简单易用:具有直观的 API,易于集成和使用。

              安装:

              pip install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

              【示例】:使用 pyttsx3 实现文本转换语音

              import pyttsx3 as pyttsx
              engine = pyttsx.init()  # 初始化引擎
              engine.say('独断万古荒天帝, 唯负罪州火桑女')  # 添加文本到语音队列
              engine.runAndWait()  # 开始语音输出
              
              2.2 使用SAPI实现文本转换语音

              在 python 中,你也可以使用 SAPI 来做文本到语音的转换。

              在Python中,win32com库是一个用于与Windows操作系统中的COM(Component Object Model)组件进行交互的模块。win32com.client模块提供了一种使用COM自动化的Python接口。通过win32com.client.Dispatch方法,可以访问和控制支持COM自动化的任何Windows应用程序或服务

              对于SAPI(Speech Application Programming Interface),可以通过win32com库来访问其功能,从而实现文本到语音(TTS)和语音识别。

              【示例】:使用 SAPI 实现文本转换语音

              from win32com.client import Dispatch
              msg = "独断万古荒天帝, 唯负罪州火桑女"
              speaker = Dispatch('SAPI.SpVoice')  # 创建SAPI的语音引擎实例
              speaker.Speak(msg)  # 将文本转换为语音并朗读
              del speaker  # 删除 speaker 对象,释放与之关联的资源。
              
              2.3 使用 SpeechLib实现文本转换语音

              SpeechLib 是微软提供的一个用于语音功能的 COM 库,它允许开发者在 Windows 平台上进行文本到语音(TTS)和语音识别的开发。通过 SpeechLib,您可以控制语音引擎的多种属性,比如语速、音量、语调以及使用的语音库。

              使用 SpeechLib,可以从文本文件中获取输入,再将其转换为语音。

              使用使用 SpeechLib需要安装第三方库:comtypes

              安装命令:

              pip install comtypes -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

              【示例】:使用 SpeechLib 实现文本转换语音

              demo文件:

              【python的魅力】:教你如何用几行代码实现文本语音识别 第1张

              from comtypes.client import CreateObject
              from comtypes.gen import SpeechLib  # 导入 SpeechLib
              engine = CreateObject("SAPI.SpVoice")  # 创建 SAPI.SpVoice 对象的实例
              stream = CreateObject("SAPI.SpFileStream")  # 创建 SAPI.SpFileStream 对象的实例
              infile = 'demo.txt'
              outfile = 'demo_audio.wav'
              stream.Open(outfile, SpeechLib.SSFMCreateForWrite)  # 输出文件,准备写入音频数据
              engine.AudioOutputStream = stream  # 音频输出流设置为 stream 对象
              f = open('demo', 'r', encoding='utf-8')  # 打开输入文本文件
              TheText = f.read()  # 读取文件
              f.close()  # 关闭文件
              engine.speak(TheText)  # 使用语音引擎将文本转换为语音并输出。
              stream.close()  # 关闭音频流,完成音频文件的写入
              

              【python的魅力】:教你如何用几行代码实现文本语音识别 第2张

              三、语音转换为文本

              3.1 使用 PocketSphinx实现语音转换文本

              PocketSphinx 是一个轻量级的语音识别库,它是 CMU Sphinx 开源语音识别系统的一个子集。CMU Sphinx 由卡内基梅隆大学开发,是一个功能强大且灵活的语音识别系统。PocketSphinx 特别适用于嵌入式系统和移动设备,因为它的体积小、速度快,同时提供了相对较高的识别准确率。

              PocketSphinx 的主要特点包括:

              • 轻量级:适用于资源受限的环境,如移动设备和嵌入式系统。
              • 实时性能:能够实现实时的语音识别。
              • 易于使用:提供了简单的 API,方便开发者快速集成和使用。
              • 可定制:允许开发者根据需要定制语言模型和声学模型。

                所需的第三方模块:PocketSphinx和SpeechRecognition

                安装命令:

                pip install PocketSphinx -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

                pip install SpeechRecognition -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

                【示例】:使用 PocketSphinx 实现语音转换文本

                import speech_recognition as sr
                audio_file = 'demo_audio.wav'
                r = sr.Recognizer()
                with sr.AudioFile(audio_file) as source:
                    audio = r.record(source)
                try:
                    # print('文本内容:',r.recognize_sphinx(audio,language="zh_CN"))
                    print('文本内容:', r.recognize_sphinx(audio))
                except Exception as e:
                    print(e)
                

                如果在使用PocketSphinx时遇到问题,比如初始化失败,需要检查:

                • 是否已经正确安装了pocketsphinx。
                • 是否有合适的语言模型和字典可供使用。
                • 是否有足够的权限访问所需的文件。
                • 系统是否满足PocketSphinx的运行要求。

                  安装完 speech_recognition 之后是不支持中文的,需要在 Sphinx 语音识别工具包里面下载对应的普通话升学和语言模型 。

                  下载链接:

                  https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

                  将下载好的普通话升学和语言模型放到安装 Python\Lib\site-packages\speech_recognition\pocketsphinx-data目录下


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]