微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中文本到语音的循环失败

如何解决python中文本到语音的循环失败

下面给出的程序运行正常,但循环部分运行不正常。 这是错误消息: PermissionError: [Errno 13] Permission denied: 'TALK.mp3'。 该程序仅适用于第一次,当我重置它时,没有语音输出,并显示此异常。 任何人都可以向我解释代码有什么问题吗? 仅供参考,我是编程新手,所以如果您能详细说明解决方案,那将非常有帮助。

from tkinter import *
from gtts import gTTS
from playsound import playsound

root = Tk()
root.geometry('400x400')
root.config(bg = 'ghost white')
root.title('TEXT_TO_SPEECH')

Label(root,text = 'TEXT_TO_SPEECH',font='arial 20 bold',bg ='white smoke').pack()

Label(root,text ='Enter Text',font ='arial 15 bold',bg ='white smoke').place(x=15,y=70)

Msg = StringVar()

entry_field = Entry(root,textvariable =Msg,width ='50')
entry_field.place(x=18,y=100)

def Text_to_speech():
    Message = entry_field.get()
    speech = gTTS(text = Message)
    speech.save('TALK.mp3')
    playsound('TALK.mp3')

def Exit():
    root.destroy()

def Reset():
    Msg.set('')

Button(root,text = "PLAY",font = 'arial 15 bold',command = Text_to_speech,width =4).place(x=25,y=140)
Button(root,text = 'EXIT',command = Exit,bg = 'OrangeRed1').place(x=100,text = 'RESET',font='arial 15 bold',command = Reset).place(x=175,y =140)

root.mainloop()

解决方法

尝试以这种方式使用 os.remove() :


from tkinter import *
from gtts import gTTS
from playsound import playsound
import os

root = Tk()
root.geometry('400x400')
root.config(bg='ghost white')
root.title('TEXT_TO_SPEECH')

Label(root,text='TEXT_TO_SPEECH',font='arial 20 bold',bg='white smoke').pack()

Label(root,text='Enter Text',font='arial 15 bold',bg='white smoke').place(x=15,y=70)

Msg = StringVar()

entry_field = Entry(root,textvariable=Msg,width='50')
entry_field.place(x=18,y=100)


def Text_to_speech():
    os.remove('TALK.mp3')
    Message = entry_field.get()
    speech = gTTS(text=Message)
    speech.save('TALK.mp3')
    playsound('TALK.mp3')


def Exit():
    root.destroy()


def Reset():
    Msg.set('')


Button(root,text="PLAY",command=Text_to_speech,width=4).place(x=25,y=140)
Button(root,text='EXIT',command=Exit,bg='OrangeRed1').place(x=100,text='RESET',command=Reset).place(x=175,y=140)

root.mainloop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?