基于百度AI语音合成,使用python编写的语音朗读工具
最近要考研,要阅读大量的书籍,希望读PDF文档的时候,能滑动一段文字后,电脑能自动读出声,这样就懒得自己读了。
因为电脑上的各种软件太过拉胯,所以自己写了一个在电脑上滑动取词的有声阅读。
如果需要的话,可以自取使用。
三四年没有写python了,语法全都忘完了,渣代码勿怪。
import os
import time# import pyautogui
import playsound
import pyperclip
import threading
# from pydub import AudioSegment
from aip import AipSpeech# from ffmpeg import audioprint("""
###############################################################
# 目前已知bug #
# (1)程序目前存在一些bug,比如单独读一个符号,就会崩溃。 #
# (2)以及程序如果没有正常结束(崩溃),程序的目录下会留存 #
# 一些音频文件,如果不将它们清除,下一次程序运行时,就会出 #
# 现错误结果。 #
# (3)如果没能从百度API下载到音频文件时,程序有可能会崩溃 #
# 这点尚不确定。 #
###############################################################""")
print("""
####################################################################
# 程序使用方法 #
# (1)双击运行本程序之后,选择语音播放速度,数值越高速度越快。 #
# (2)运行之后,可以不用理会黑色窗口。最小化即可。此时,将你想 #
# 阅读的文本进行复制,程序即可自动朗读复制内容。 #
# → P.S. 可通过ctrl+c键实现快速复制。 #
# (3)因为本程序是调用百度语音合成API,程序需在联网的环境下运 #
# 行,否则将会出错。 #
####################################################################""")# 这里填你从百度AI语音合成那里拿过来的三个参数。
# 至于如何从百度AI语音合成,可以点击下面这个链接
# https://ai.baidu.com/tech/speech/tts
# 或者你也可以百度一下,如何申请百度AI语音合成。
UserAppId = ""
UserLogin = ""
UserPaswd = ""mlgbd = 0
client = AipSpeech(UserAppId, UserLogin, UserPaswd)speed_mp3 = int(input("输入语音播放,播放速度1-9:"))
os.system("set path=\"" + os.getcwd() + "\"")mlgb = 1class ThreadingPrc(threading.Thread):def run(self):global mlgbwhile True:time.sleep(0.01)if os.path.exists(os.getcwd() + "\\" + str(mlgb) + "audio.mp3"):playsound.playsound(str(mlgb) + "audio.mp3")os.remove(os.getcwd() + "\\" + str(mlgb) + "audio.mp3")mlgb += 1def run_init_speaker():global speed_mp3global mlgbdset_text = pyperclip.paste()set_text = set_text.replace("\r", "")set_text = set_text.replace("\n", "")set_text = set_text.replace("\t", "")set_text_u = []# 将其切片成每份300个字的数组,或者按照句号分割if set_text.find("。") != -1:while set_text.find("。") != -1:set_text_u.append(set_text[0:set_text.find("。") + 1])set_text = set_text[set_text.find("。") + 1:len(set_text)]set_text_u.append(set_text[0:len(set_text)])elif len(set_text) > 300:while len(set_text) != 0:set_text_u.append(set_text[0:300])set_text = set_text[300:len(set_text)]else:set_text_u.append(set_text)# sound = []for set_next in set_text_u:mlgbd += 1# 输入百度API接口# 将数据获取进来,具体配置信息可在下面查看if set_next != '':result = client.synthesis(text=set_next,lang="zh",ctp=1,options={'spd': speed_mp3,'pit': 5,'vol': 5,'per': 5003})else:mlgbd -= 1break# 将获取的音频文件,写进磁盘里if not isinstance(result, dict):with open(str(mlgbd) + 'audio.mp3', 'wb') as f:f.write(result)else:# pyautogui.alert("错误!!!\n" + str(result.items())) # 把错误信息显示出来print("出错啦!")print(str(result.items()))f.close()# 设置2倍速# audio.a_speed(str(mlgbd) + "audio.mp3", "1.5", "set" + str(mlgbd) + "audio.mp3")# os.remove(str(mlgbd) + "audio.mp3")# os.rename("set" + str(mlgbd) + "audio.mp3", str(mlgbd) + "audio.mp3")# 将对象添加到列表,方便后续合成一个语音# sound.append(AudioSegment.from_mp3(str(mlgbd) + "audio.mp3"))# 初始化一个对象# sum_sound = sound[0]# del sound[0]# 如果还有的话,那么就把列表取到空# while len(sound) != 0:# sum_sound += sound[0]# del sound[0]# 将合成的文件写入到硬盘中# sum_sound.export(str(mlgbd) + "saudio.mp3", format="mp3")# playsound.playsound(str(mlgbd) + "saudio.mp3")new_thread = ThreadingPrc()
new_thread.start()# 从剪切板循环判断,是否存在更改的现象,如果存在就调用speaker的功能
paste_string = pyperclip.paste()
while True:time.sleep(0.05)if paste_string != pyperclip.paste():run_init_speaker()paste_string = pyperclip.paste()# 参数 类型 描述 是否必须
# tex String 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节 是
# cuid String 用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内 否
# spd String 语速,取值0-9,默认为5中语速 否
# pit String 音调,取值0-9,默认为5中语调 否
# vol String 音量,取值0-15,默认为5中音量 否
# per String 普通发音人选择:度小美=0(默认),度小宇=1,,度逍遥(基础)=3,度丫丫=4 否
# per String 精品发音人选择:度逍遥(精品)=5003,度小鹿=5118,度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5 否# 错误信息
# 错误返回格式
# 若请求错误,服务器将返回的JSON文本包含以下参数:# error_code:错误码。
# error_msg:错误描述信息,帮助理解和解决发生的错误。# 错误码
# 错误码 含义 其他
# 500 不支持的输入
# 501 输入参数不正确
# 502 token验证失败 16 "Open api characters limit reached" 字数超限,没有对应的接口额度
# 503 合成后端错误
如果有人回复的话,就再详细写一写具体过程。
基于百度AI语音合成,使用python编写的语音朗读工具相关推荐
- 用python朗读字母-使用python编写一个语音朗读闹钟功能的示例代码
想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...
- python在线朗读-使用python编写一个语音朗读闹钟功能的示例代码
想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...
- python闹钟源码_使用python编写一个语音朗读闹钟功能的示例代码
想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...
- python 语音朗读软件下载_使用python编写一个语音朗读闹钟功能的示例代码
想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...
- 【百度AI语音合成】会员到访门店语音提醒
每次会员到访都需要.会员自主结账或找导购才能被发现.或者需要一个人员站在门口,并且对会员都全部了解,才能对会员到访进行更好服务的接待. 小帅为了免去这些操作呢.就想到了百度AI.语音合成.再结合第三方 ...
- 使用python编写一个语音朗读闹钟
想找一个可以播放文字的闹钟找不到,自己写一个更简单. TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现T ...
- html识别文字转语音,万能君工具箱v1.8 - 基于百度AI实现语音转文字/文字转语音/文字识别OCR/翻译...
一.需求分析 1.音频转文字:目前市面上的音频转文字大多收费.音频转文字的需求是:上传一段音频,直接识别成文字,对于会议记录的比较好使,注意不是实时的语音识别. 2.文字转语音:转的语音不要太生硬. ...
- 【人工智能】基于百度AI+Python编程的简单应用:关于人像照片动漫化的分析实现(可进行批量化处理)——教你看到二次元中的自己
前两天博主刚写过一篇文章:[人工智能]基于百度AI和Python编程的简单实现:通过QQ/Tim截图进行文本识别功能的分析实战详解--以获取百度文库付费内容为例.由于这两天博主摸鱼时又一次使用到了百度 ...
- python 百度ai批量识别_Python基于百度AI的文字识别的示例
Python基于百度AI的文字识别的示例 使用百度AI的文字识别库,做出的调用示例,其中filePath是图片的路径,可以自行传入一张带有文字的图片,进行识别. 下载baidu-aip这个库,可以直接 ...
最新文章
- 打开word出现“您正试图运行的函数包含有宏或需要宏语言支持的内容。”的解决方法
- 栈和队列----用栈求解汉诺塔问题
- SSH 登录速度慢的解决办法
- 经典面试题(39):以下代码将输出的结果是什么?
- Flutter进阶第9篇:检测网络连接,监听网络变化
- 图解WIN7通过“磁盘管理”功能进行分区的详细过程
- c 汇编语言小程序100例,汇编语言100例
- 前端商城vue项目案例1
- Microsoft Windows XP Embedded 技术常见问题
- FastDFS实现原理及流程
- Python利用fitz库提取pdf中的图片(针对多种类型pdf)
- 数字单位转换(例:元->万元)
- 前端字符串去空白字符,包括空格、制表符、换页符
- 第十七周助教工作总结——NWNU李泓毅
- 深入浅出RPC---4、服务注册发现和健康监测
- Anntec ZKUXFT XT2 FGPA卡DPDK使用方法
- 数据分析之乳腺癌预测
- Android之doze机制的白名单
- SpringBoot:MultipartResolver 文件上传、大小限制相关配置、实现原理与自定义
- Linux移动文件和文件夹(目录)命令