最近要考研,要阅读大量的书籍,希望读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编写的语音朗读工具相关推荐

  1. 用python朗读字母-使用python编写一个语音朗读闹钟功能的示例代码

    想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...

  2. python在线朗读-使用python编写一个语音朗读闹钟功能的示例代码

    想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...

  3. python闹钟源码_使用python编写一个语音朗读闹钟功能的示例代码

    想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...

  4. python 语音朗读软件下载_使用python编写一个语音朗读闹钟功能的示例代码

    想找一个可以播放文字的闹钟找不到,自己写一个更简单.TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现TT ...

  5. 【百度AI语音合成】会员到访门店语音提醒

    每次会员到访都需要.会员自主结账或找导购才能被发现.或者需要一个人员站在门口,并且对会员都全部了解,才能对会员到访进行更好服务的接待. 小帅为了免去这些操作呢.就想到了百度AI.语音合成.再结合第三方 ...

  6. 使用python编写一个语音朗读闹钟

    想找一个可以播放文字的闹钟找不到,自己写一个更简单. TTS实现由很多种办法,百度等都提供了API接口,但类似百度,需要先注册等一系列动作. 其实windows自带的win32com功能可以简单实现T ...

  7. html识别文字转语音,万能君工具箱v1.8 - 基于百度AI实现语音转文字/文字转语音/文字识别OCR/翻译...

    一.需求分析 1.音频转文字:目前市面上的音频转文字大多收费.音频转文字的需求是:上传一段音频,直接识别成文字,对于会议记录的比较好使,注意不是实时的语音识别. 2.文字转语音:转的语音不要太生硬. ...

  8. 【人工智能】基于百度AI+Python编程的简单应用:关于人像照片动漫化的分析实现(可进行批量化处理)——教你看到二次元中的自己

    前两天博主刚写过一篇文章:[人工智能]基于百度AI和Python编程的简单实现:通过QQ/Tim截图进行文本识别功能的分析实战详解--以获取百度文库付费内容为例.由于这两天博主摸鱼时又一次使用到了百度 ...

  9. python 百度ai批量识别_Python基于百度AI的文字识别的示例

    Python基于百度AI的文字识别的示例 使用百度AI的文字识别库,做出的调用示例,其中filePath是图片的路径,可以自行传入一张带有文字的图片,进行识别. 下载baidu-aip这个库,可以直接 ...

最新文章

  1. 打开word出现“您正试图运行的函数包含有宏或需要宏语言支持的内容。”的解决方法
  2. 栈和队列----用栈求解汉诺塔问题
  3. SSH 登录速度慢的解决办法
  4. 经典面试题(39):以下代码将输出的结果是什么?
  5. Flutter进阶第9篇:检测网络连接,监听网络变化
  6. 图解WIN7通过“磁盘管理”功能进行分区的详细过程
  7. c 汇编语言小程序100例,汇编语言100例
  8. 前端商城vue项目案例1
  9. Microsoft Windows XP Embedded 技术常见问题
  10. FastDFS实现原理及流程
  11. Python利用fitz库提取pdf中的图片(针对多种类型pdf)
  12. 数字单位转换(例:元->万元)
  13. 前端字符串去空白字符,包括空格、制表符、换页符
  14. 第十七周助教工作总结——NWNU李泓毅
  15. 深入浅出RPC---4、服务注册发现和健康监测
  16. Anntec ZKUXFT XT2 FGPA卡DPDK使用方法
  17. 数据分析之乳腺癌预测
  18. Android之doze机制的白名单
  19. SpringBoot:MultipartResolver 文件上传、大小限制相关配置、实现原理与自定义
  20. Linux移动文件和文件夹(目录)命令

热门文章

  1. matlab 反步法,基于Matlab-Cod的Python反步法编程
  2. 微机原理-数据传送实验
  3. DPoS共识机制白皮书理解
  4. SolidWorks正版软件系统配置要求
  5. 【Java研发岗技能要求】
  6. 强势推荐8个超实用的软件,每一个都让人大开眼界
  7. 七张 Python 思维导图,理清 Python 知识体系
  8. 某知名IT公司最近的一道笔试编程题
  9. 选择排序(升序排序)对无序序列进行排序
  10. MySQL:图形工具navicat新建数据库并导入sql文件