写入音频文件时出错。
基本上,每当我调用函数然后播放它时,我都会覆盖mp3中的数据。
它第一次通过,但后来给我workorder
。
以下是代码:
[Errno 13] Permission denied: 'file.mp3'
错误发生在def speech(self, response):
audio_file = "response.mp3"
tts = gTTS(text=str(response), lang="en")
tts.save(audio_file)
pygame.mixer.init()
pygame.mixer.music.load(audio_file)
pygame.mixer.music.play()
行。
更多信息:
tts.save
谢谢!
答案 0 :(得分:1)
from gtts import gTTS
import playsound
import os
x = ['sunny', 'sagar', 'akhil']
tts = 'tts'
for i in range(0,3):
tts = gTTS(text= x[i], lang = 'en')
file1 = str("hello" + str(i) + ".mp3")
tts.save(file1)
playsound.playsound(file1,True)
print 'after'
os.remove(file1)
每次保存时都会更改文件名,这对我有用。
答案 1 :(得分:1)
您收到此错误,因为混音器没有释放该音频文件。如果要混合器释放该文件,则可以将无用或空文件加载到混合器中。然后,您可以覆盖该音频文件。 例如{。{1}} 此先前加载的文件释放后。
答案 2 :(得分:0)
这是一个更好的解决方案,如果我有时间我也会计算登陆同一档案的概率
from gtts import gTTS
from playsound import playsound
import random
import os
#creating a super random named file
r1 = random.randint(1,10000000)
r2 = random.randint(1,10000000)
randfile = str(r2)+"randomtext"+str(r1) +".mp3"
tts = gTTS(text='hey, STOP It!!', lang='en', slow=True)
tts.save(randfile)
playsound(randfile)
print(randfile)
os.remove(randfile)
答案 3 :(得分:0)
您可以在同一文件夹中创建另一个文件,只需复制并重命名即可。
您要使用的文件:(“ C:/.../ file.mp3”) 复制的文件:(“ C:/.../ file_copy.mp3”)
您可以将在mixer.music.load(“ C:/.../ file.mp3”)中加载的文件更改为mixer.music.load(“ C:/.../ file_copy.mp3”)和delete使用此命令可以毫无问题地删除(“ C:/.../ file.mp3”)
from pygame import mixer
import os
mixer.music.load("C:/.../file.mp3")
mixer.music.play()
mixer.music.load("C:/.../file_copy.mp3")
os.remove("C:/.../file.mp3")
但是上面的代码会在播放之前删除文件,因此您可以使用一种方法等待播放:
from pygame import mixer
import os
mixer.music.load("C:/.../file.mp3")
mixer.music.play()
while mixer.music.get_busy(): # check if the file is playing
pass
mixer.music.load("C:/.../file_copy.mp3")
os.remove("C:/.../file.mp3")
答案 4 :(得分:0)
您每次都应使用唯一名称来命名文件,因此我意识到的解决方案是使用 date 来命名文件,例如==>
date_string = datetime.now().strftime("%d%m%Y%H%M%S")
filename = "voice"+date_string+".mp3"
tts.save(filename)
playsound.playsound(filename)
答案 5 :(得分:0)
我遇到了同样的问题,然后弄清楚该文件指向了先前的位置,因此我必须释放它。它工作正常,重要的是它也不会创建mp3文件。如果不释放它,它将第一次正常运行并保存音频文件,然后第二次出现错误。
from gtts import gTTS
import os
import playsound
def tts(text, lang):
file = gTTS(text = text, lang = lang)
file.save("audio/speak_func.mp3")
playsound.playsound('audio/speak_func.mp3', True)
os.remove("audio/speak_func.mp3")
答案 6 :(得分:0)
如果您不想再保存文件,则可以在保存下一个文件之前删除音频文件。因此,您可以使用相同的名称保存新文件。 下面是我成功运行的代码
import speech_recognition as ram
from playsound import playsound
from gtts import gTTS
import os
r=ram.Recognizer()
with ram.Microphone() as source:
while True:
r.adjust_for_ambient_noise(source,duration=1)
print("I'm Listening....")
playsound('audio/listen.mp3')
audio=r.listen(source, timeout=5)
text=r.recognize_google(audio)
tts = gTTS("Boss. you said "+str(text)+". i'm opening it")
tts.save('audio/text.mp3')
print("you said "+text+".")
playsound('audio/text.mp3')
os.remove('audio/text.mp3')