I am trying to create a ChatBot, VA, in Python, for receiving audio output I have the packages gtts(google text to speech), playsound, and have used system os to save the audio file before playing.
The Code is below:
from gtts import gTTS import speech_recognition as sr import playsound import os #to save the file import time def speak(text):#this defines the function SPEAK and creates the command for its use tts = gTTS(text=text, lang="en") filename = "voice.mp3" tts.save(filename) #saves the audio file playsound.playsound(filename) #function ends here
To play the audio I use the function in the following way:
>>>speak("I am speaking this text")
The above ^^^ works perfectly fine, but when I use multiple statements like:
>>>speak("I am saying this") >>>speak("And also this!")
It gives an error:
PermissionError: [Errno 13] Permission denied: 'voice.mp3'
Which I figured was due to matching names of audio files. But then when I tried to use a loop to change the number every time, it still showed the error after playing the audio for a specified number of times. Can someone please give me a solution to this? Thanks!
Sounds like a file permission issue when the function is running it is overwriting the existing file
I would check that the user/group which is running the code has permission to read/write
How this is done depends if you are using windows, mac or linux
You are not allowed to overwrite the file
voice.mp3 from a different call of the function. What you need to do is delete the voice.mp3 file after you play the file. So:
def speak(text):#this defines the function SPEAK and creates the command for its use tts = gTTS(text=text, lang="en") filename = "voice.mp3" tts.save(filename) #saves the audio file playsound.playsound(filename) os.remove(filename)
Make sure that you are not storing the file in a sensitive location, and your working directory is somewhere in documents or downloads or something.