当前位置: 首页 > news >正文

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/tesseractWindows 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 ImageEnhanceret = {'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'] = textreturn 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 AipSpeechret = {'code': 100, 'msg': None, 'data': None}
class SpeechRecognition(APIView):# 语音转文字  使用百度语音识别def post(self, request):# 百度语音识别try:# 设置 APPID、API Key 和 Secret KeyAPP_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'] = 101ret['msg'] = res['err_msg']except Exception as e:ret['code'] = 102ret['msg'] = ereturn 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 pyttsx3def 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:passengine.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)
http://www.lryc.cn/news/409080.html

相关文章:

  • SSRF (服务端请求伪造)
  • SQL中的LEFT JOIN、RIGHT JOIN和INNER JOIN
  • [网鼎杯 2020 朱雀组]Nmap(详细解读版)
  • 【React】详解“最新”和“最热”切换与排序
  • BUUCTF [MRCTF2020]Ezpop
  • RV1126 Linux 系统,接外设,时好时坏(一)应该从哪些方面排查问题
  • Vue实现简单小案例
  • 【MATLAB APP】建立独立桌面APP
  • Spring的优缺点?
  • 第一百八十三节 Java IO教程 - Java目录事件、Java异步I/O
  • 【设计模式】(万字总结)深入理解Java中的创建型设计模式
  • 【全面讲解下Docker in Docker的原理与实践】
  • Android Settings增加多击事件,增加开发者模式打开难度
  • 【相机与图像】1. 相机模型的介绍:内参、外参、畸变参数
  • Linux内核netlink机制 - 用户空间和内核空间数据传输
  • Node.js自动化处理TOML文件
  • Spring boot 后端向前端发送日期时间发现少了8小时
  • MySQL数据库(基础篇)
  • ffmpeg ffplay.c 源码分析二:数据读取线程
  • 国科大作业考试资料《人工智能原理与算法》2024新编-第十三次作业整理
  • Netdevops入门之Telnetlib语法案例
  • 永辉“爆改”续命
  • IEEE双一区Top“饱受诟病”!曾上医院黑名单,国人占比高达82.405%,目测即将拉下神坛?
  • Hive环境搭建(Mysql数据库)
  • 【ESP32 IDF SPI硬件驱动W25Q64】
  • 太原高校大学智能制造实验室数字孪生可视化系统平台建设项目验收
  • Kafka消息队列
  • @Transactional注解及其事务管理
  • ROS2入门到精通—— 3-1 ROS2实战:CasADi —— 优化计算的利器
  • 日拱一卒 | JVM