使用pyttsx3库编写自动朗读工具(二)
或许以后实在恶心到我了,会继续给那个功能实现。也没准等我以后有了钱了,就继续用百度语音或者讯飞的api,毕竟微软自带的语音实现起来实在太拉胯了。期间遇到了一些不是很影响使用的问题,但由于懒癌晚期,感觉好像不影响大体使用,再加上解决起来还要继续捣鼓py,就懒得改了。主要是就之前的那个有声阅读工具进行改进,如果一不小心读错了,就要给关了重新打开,不然就要等那破玩意读完。原本懒得继续折腾了,但是用了几天
·
主要是就之前的那个有声阅读工具进行改进,如果一不小心读错了,就要给关了重新打开,不然就要等那破玩意读完。
原本懒得继续折腾了,但是用了几天实在给我恶心的不行。不得已下午我又重新写了一遍,简单的添加了一些功能。
期间遇到了一些不是很影响使用的问题,但由于懒癌晚期,感觉好像不影响大体使用,再加上解决起来还要继续捣鼓py,就懒得改了。
或许以后实在恶心到我了,会继续给那个功能实现。也没准等我以后有了钱了,就继续用百度语音或者讯飞的api,毕竟微软自带的语音实现起来实在太拉胯了。
下面贴出代码。
import pyttsx3
import pyperclip
import multiprocessing
import time
import os
from pynput import keyboard
def on_press(key):
if key == keyboard.Key.alt_l:
os.system('"taskkill /F /IM speakerMu"')
def keyboard_listen():
with keyboard.Listener(on_press=on_press) as lsn:
lsn.join()
def mu_speaker():
speak = pyttsx3.init() # 初始化语音引擎
speak.setProperty("rate", 250)
speak.setProperty("volume", 2.5)
# 这里语速是250,音量是1,可以自己调
speakString = pyperclip.paste()
speakString = speakString.replace("\r\n", "")
speakString = speakString.replace("\n", "")
speakString = speakString.replace(" ", "")
# 上面去除一些换行回车空格什么的,因为在有的地方(如pdf)会造成奇怪的停顿。
# 但有时候空格去除后反倒会出现一些问题,遇到的话可以把去除空格注释掉。
speak.say(speakString)
speak.runAndWait()
if __name__ == "__main__":
pasteString = pyperclip.paste()
keyboardCreate = multiprocessing.Process(target=keyboard_listen)
keyboardCreate.start()
# 创建一个键盘监听的进程,如果用户输入特定按键,朗读就会终止。
# !!!!!但目前没有成功!!!!!!
# 我试着把进程对象设置成全局变量给他终止,或者传过去pid,或者目前这个方法都不行。
while True:
time.sleep(0.1)
if pasteString != pyperclip.paste():
pasteString = pyperclip.paste()
if 'speaker_process' in dir():
# 如果这个变量名存在,也就是这个进程创建过,就给他ban了,用以终止后读新文本。
speaker_process.terminate()
speaker_process.join()
speaker_process = multiprocessing.Process(target=mu_speaker,name="speakerMu")
speaker_process.start()
# 创建一个朗读的进程,如果有新的文本需要读的话,就给他终止,重新创建,用于实现终止再读。
更多推荐
所有评论(0)