之前写过一个基于百度语音api的,虽然语音质量很好,但是不适合穷人使用(比如我),实在太贵了,于是只好翻出来之前写的免费的库来用。以下贴出代码。

import pyttsx3
import pyperclip
import time


speak = pyttsx3.init()  # 初始化语音引擎
speak.setProperty("rate", 250)
speak.setProperty("volume", 0.8)
# 这里语速是250,音量是1,可以自己调

while True:
    pasteString = pyperclip.paste()
    time.sleep(0.1)
    if pasteString != pyperclip.paste():
        pasteString = pyperclip.paste()
        
        pasteString = pasteString.replace("\r\n", "") 
        pasteString = pasteString.replace("\n", "")
        pasteString = pasteString.replace(" ", "")
        # 上面去除一些换行回车空格什么的,因为在有的地方(如pdf)会造成奇怪的停顿。
        # 但有时候空格去除后反倒会出现一些问题,遇到的话可以把去除空格注释掉。
        speak.say(pasteString)
        speak.runAndWait()

代码很简单,一看就懂,就不解释了。

原本想添加一个ctrl+c就能终止读声的功能,但是其中出现各种bug,我尝试用pynput监听终止信号,或者将上例当成一个线程进行创建和终止,但都失败了。有机会的话,会试着给实现出来。

Logo

一站式 AI 云服务平台

更多推荐