使用百度ai进行文字识别、语音合成
AI语音识别技术正在消除文字障碍 #生活知识# #生活感悟# #科技生活变迁# #人工智能日常#
文字识别+语音合成 一、创建百度ai的api1.在百度ai注册登录2.创建文字识别和语音合成的api 二、项目介绍1.引入库2.接口调用、文字识别3.窗口展示 总结人工智能课程的期末作业,使用python语言,结合百度ai,可以识别图片或者剪贴板的文字,输出文字并将结果合成语音音频播放
一、创建百度ai的api
1.在百度ai注册登录
登录百度ai官网
https://console.bce.baidu.com/
注册一个账号,有的话直接登录
2.创建文字识别和语音合成的api
首先在控制台选择需要使用的AI服务项,先选择文字识别
由于本人仅为了完成期末作业,因此就不开通付费,第一次使用会有免费的可以领取
领取免费后就去创建应用
在自己的应用列表就可以看见自己创建的应用,有相应的APP ID 、API key、Secret key,后面在代码中会调用。
语音合成的应用创建与文字识别的应用创建一样,需要注意的是,应该选择语音技术下的语音合成,此项目是将识别出的文字合成为语音音频,需要注意:语音合成的免费时间只有6个月,超过这个时间就不能用,如果创建后在半年后发现使用不出来就是免费时间已经过了。
二、项目介绍
1.引入库
代码如下:
import wx from PIL import ImageGrab from PIL import Image from gtts import gTTS import io import pub from threading import Thread from pubsub import pub import filetype from aip import AipOcr, AipSpeech from playsound import playsound 1234567891011
提示:aip应该下载baidu-aip,pubsub下载pypubsub
2.接口调用、文字识别
调用接口代码:
APP_ID = '你的id' API_KEY = '你的文字识别的api key' SECRET_KEY = '你的secret key' #语音合成接口调用 SPEECH_APP_ID = '你的id' SPEECH_API_KEY = '你的语音合成的APT KEY' SPEECH_SECRET_KEY = '你的secret key' # AipOcr是OCR的Python SDK客户端,为使用OCR的开发人员提供了一系列的交互方法。 clientAipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY) # AipSpeech是百度语音的客户端,认证成功之后,客户端将被开启,这里的client就是已经开启的百度语音的客户端了。 clientAipSpeech = AipSpeech(SPEECH_APP_ID, SPEECH_API_KEY, SPEECH_SECRET_KEY) 1234567891011
文字识别:
本项目从本地图片或者屏幕截图都可以识别文字
#以二进制方式读取本地文件 def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() # 返回文件读取对象 1234
将文字合成为语音音频
def run(self): # """ 带参数调用通用文字识别, 图片参数为本地图片 """ AipOcr.setConnectionTimeoutInMillis(self, ms=5000) # 设置连接超时时间,一般没必要设置 AipOcr.setSocketTimeoutInMillis(self, ms=6000) # 设置传送文件超时时间,一般么没必要设置 client = AipOcr(APP_ID, API_KEY, SECRET_KEY) result = {} try: result = client.basicGeneral(image, options) # 本地图片的信息 if result.get("error_msg"): print(result['error_msg']) contents.SetValue(result['error_msg']) else: resultword = result['words_result'] num = result['words_result_num'] OCRtext = [] for i in range(0, num): print(resultword[i]['words']) # 打印图片文字信息 OCRtext.append(resultword[i]['words']) # 图片转文字结果 OutPutOCRtext = '\n'.join(OCRtext) # 发送事件,msg为传递的参数 wx.CallAfter(pub.sendMessage, 'update', re_msg="以下为识别内容") wx.CallAfter(pub.sendMessage,'update',re_msg = "请仔细听") wx.CallAfter(pub.sendMessage, 'update', re_msg=OutPutOCRtext) # 将文字给到文字转语音函数 convert_wordstospeed(OutPutOCRtext)
12345678910111213141516171819202122232425262728def convert_wordstospeed(words): print("MP3字幕:") print(words) speechResult = clientAipSpeech.synthesis( words, # text:合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节。 'zh', # lang:语言,中文:zh,英文:en。 1, # ctp:客户端信息这里就写1,写别的不好使,至于为什么咱们以后再解释。 { 'vol': 5, # 合成音频文件的准音量 'spd': 4, # 语速取值0-9,默认为5中语速 'pit': 8, # 语调音量,取值0-9,默认为5中语调 'per': 3 # 发音人选择,0为女声,1为男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女 }) # 识别正确result返回语音二进制,错误则返回dict if not isinstance(speechResult, dict): with open('result.mp3', 'wb') as f: f.write(speechResult) playsound("result.mp3")
12345678910111213141516171819音频会保存为mp3格式
3.窗口展示
创建窗口代码:
def __init__(self): wx.Frame.__init__(self, None, wx.ID_ANY, "识图发音", size=(410, 335)) global filename, contents, get_file_content, imgmark imgmark = "" # 创建panel面板,大小和Frame是一样大的 bkg = wx.Panel(self, wx.ID_ANY) # 在Panel上添加Button loadButton = wx.Button(bkg, label='选择文件') # 绑定单击事件 loadButton.Bind(wx.EVT_BUTTON, self.choose) ocrButton = wx.Button(bkg, label='识别文字') ocrButton.Bind(wx.EVT_BUTTON, self.OCR) clipButton = wx.Button(bkg, label="获取剪贴板") clipButton.Bind(wx.EVT_BUTTON, self.clipOCR)
1234567891011121314151617if __name__ == "__main__": app = wx.App(False) # 创建一个 Frame (就是窗体),并显示出来。 frame = MyForm() frame.Show() # 应用程序进入消息循环 app.MainLoop() 1234567
窗口展示:
结果展示:
总结
以上就是文字识别+语音合成的内容,在百度ai文档中会有这些接口的使用代码,本文仅展示部分代码,主要是介绍百度ai提供文字识别和语音技术的用处。
网址:使用百度ai进行文字识别、语音合成 https://www.yuejiaxmz.com/news/view/263422
相关内容
智能AI语音识别算法:实现高精度语音转文字技术解析语音识别合成助手
语音识别合成助手下载
python 语音识别(百度api)
视频语音识别文字
语音识别与语音合成
Android百度语音识别/语音助手
百度AI语音助手下载——让语音助手成为你的私人助理
百度语音识别 python
AI智能语音识别助手:实时录音转文字及多样化转录解决方案