自学内容网 自学内容网

python 图片转文字、语音转文字、文字转语音保存音频并朗读

一、python图片转文字

1、引言

pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png, gif, bmp, tiff等图片格式

2、环境配置

  • python3.6+
  • PIL库
  • 安装Google Tesseract OCR

3、安装pytesseract

使用pip 或 pip3

pip install pytesseract==0.3.10
pip install pillow==10.4.0

4、安装Google Tesseract OCR

Tesseract是一个开源文本识别 (OCR)引擎,是目前公认最优秀、最精确的开源OCR系统,用于识别图片中的文字并将其转换为可编辑的文本

Tesseract OCR github地址:https://github.com/tesseract-ocr/tesseract

Windows Tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/

Mac和Linux安装方法参考:https://tesseract-ocr.github.io/tessdoc/Installation.html

安装完成后

添加PATH环境变量,可方便的执行tesseract命令
D:\Development\Tesseract-OCR   ## 自己的安装路径
添加TESSDATA_PREFIX变量名,将语言字库文件夹添加到变量中
D:\Development\Tesseract-OCR\tessdata  ## 自己的安装路径

3、使用pytesseract转换图片

import pytesseract
from PIL import Image
from PIL import ImageEnhance

ret = {'code': 100, 'msg': None, 'data': None}
class TextExtraction(APIView):
    # 图片转文字
    def get(self, request):
        # 加载图像
        image = Image.open('\media\image\\2.jpg')
        # 增强图片对比度
        enhancer = ImageEnhance.Contrast(image)
        img_contrast = enhancer.enhance(2.0)

        text = pytesseract.image_to_string(img_contrast, lang='chi_sim')
        print(text)
        ret['data'] = text
        return Response(ret)

if __name__ == '__main__':
     te = TextExtraction()
     te.as_view()

二、语音转文字

使用百度语音识别Aip

1、注册登录百度AI开放平台

登录百度AI开放平台,在控制台—人工智能–语音技术
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获得APPID、API KEY、SECRET KEY

2、安装百度Aip

pip install Baidu-Aip==4.16.13

3、使用百度Aip转语音

from aip import AipSpeech

ret = {'code': 100, 'msg': None, 'data': None}
class SpeechRecognition(APIView):
    # 语音转文字  使用百度语音识别
    def post(self, request):
        # 百度语音识别
        try:
            # 设置 APPID、API Key 和 Secret Key
            APP_ID = ''
            API_KEY = ''
            SECRET_KEY = ''

            # 初始化 AipSpeech 对象
            client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

            # 设置音频文件的位置
            audio_file = '\media\\audio\\16k.wav'

            # 读取音频文件
            with open(audio_file, 'rb') as fp:
                audio_data = fp.read()

            # 识别音频文件
            res = client.asr(audio_data, 'wav', 16000, {
                'dev_pid': 1536,
            })
            print(res)
            if res['err_no'] == 0:
                print(res['result'][0])
                ret['data'] = res['result'][0]
            else:
                ret['code'] = 101
                ret['msg'] = res['err_msg']
        except Exception as e:
            ret['code'] = 102
            ret['msg'] = e
        return Response(ret)

三、speech语音播放

在python中我们可以使用speech模块让计算机进行语音输出

1、安装speech

pip install speech

2、因为speech模块最早是在python 2.x中开发的,因此在python 3.x中并不能够直接使用,我们需要打开它安装后的原始文件,并进行以下调整即可。

speech.py打开后进行定位错误位置并更改,每个人的文件位置可能有差异。因为虚拟环境的创建一般不同,Pycharm中一般是相同的,可以自行查找。

接着我们按部就班地更改以下三个位置地源文件。

原始文件第157行,print prompt应该改为print(prompt)。
原始文件第59行,thread应该改为_thread。
拖动文件到最后,将263行thread应该为_thread

3、语音输出

import speech
def speach():
    # 文字转语音
    speech.say("从前,有一座美丽的大森林,森林里住着许多小动物,它们每天过着无忧无虑的生活。")
    speech.say("Don't ask me .I have no idea why bug exist again")

四、文字转音频并保存输出

Pyttsx是一个支持Mac OS X、Windows和Linux上常见的文本到语音引擎的Python包。

1、安装pyttsx3

pip install pyttsx3

2、保存音频语音输出

import pyttsx3

def pyttsx3(text, language, rate, volume, filename, sayit=0):
    # 参数说明: 六个重要参数,阅读的文字,语言(0-英文/1-中文),语速,音量(0-1),保存的文件名(以.mp3收尾),是否发言(0否1是)  
    engine = pyttsx3.init()  # 初始化语音引擎
    engine.setProperty('rate', rate)  # 设置语速
    # 速度调试结果:50戏剧化的慢,200正常,350用心听小说,500敷衍了事
    engine.setProperty('volume', volume)  # 设置音量
    voices = engine.getProperty('voices')  # 获取当前语音的详细信息
    if int(language) == 0:
        engine.setProperty('voice', voices[0].id)  # 设置第一个语音合成器 #改变索引,改变声音。0中文,1英文(只有这两个选择)
    elif int(language) == 1:
        engine.setProperty('voice', voices[1].id)
    if int(sayit) == 1:
        engine.say(text)  # pyttsx3->将结果念出来
    elif int(sayit) == 0:
        pass
    engine.save_to_file(text, filename)  # 保存音频文件
    print(filename, "保存成功")
    engine.runAndWait()  # pyttsx3结束语句(必须加)
    engine.stop()  # pyttsx3结束语句(必须加)

if __name__ == '__main__':
    text = """
                从前,有一座美丽的大森林,森林里住着许多小动物,它们每天过着无忧无虑的生活。有一天,森林里来了几个伐木工人,
                他们拿着斧头和锯子,把一棵棵树给砍倒了。几天下来,裸露的土地不断扩大,森林里的树木不断减少。大象看了之后非常生气,
                他和几个好朋友决定把这些伐木工人抓起来,送到动物法庭上。第二天,大象他们就把伐木工人给抓了起来,送到了动物法庭上。
                许多旁观者都纷纷议论起来,猴法官说:“安静,安静,大象你们把这些人抓来是怎么回事?”大象说:“这些人乱砍树木,破坏我们的家园。
                大象的好朋友小猴说:“对呀,他们把树给砍光了,我们就不能在树上荡秋千了。”小鸟也说:”猴法官,要是没有树木,我们就不能筑巢了。
                长颈鹿说:“要是没有树木,我们就吃不到树叶了,我们会饿死的。”听到这里,猴法官对伐木工人说:“你们乱砍树木是不对的,
                没有了树木,我们动物就无法生存,同样也会给你们人类带来灾难的。”听了这些话,伐木工人觉得很惭愧,知道自己错了,
                他们保证以后不再乱砍树木破坏森林了,还在森林入口立了一块告示牌,上面写着:“保护森林,人人有责。”从此以后,人们不再破坏森林,
                动物和人类和平相处,大家都过着幸福、快乐的生活。
                """
    pyttsx3_debug(text=text, language=0, rate=200, volume=0.9, filename="\media\\audio\ptttsx3中文测试.mp3", sayit=1)

原文地址:https://blog.csdn.net/wyk123_046/article/details/140653714

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!