#python #python-3.x #pyttsx #python-playsound
#python #python-3.x #pyttsx #python-playsound
Вопрос:
Я пытаюсь создать помощника, но когда пользователь хочет воспроизвести песню, он продолжает воспроизводить ее до конца. Я хочу, чтобы это останавливалось, когда пользователь нажимает клавишу. То же самое относится и к en&ine.say()
.
Я не смог найти способ прервать действия в их документах. Есть en&ine.stop()
для pyttsx3, но я не смог заставить его работать. Я думал, что это может быть из-за en&ine.runAndWait()
но если я не включу его, машина ничего не скажет. Как я могу решить эти проблемы? Я могу попробовать использовать и другой модуль, если есть способ решить эту проблему.
import pyttsx3
from playsound import playsound
if "play" in input:
son&Name = input[5:] ".mp3"
try:
playsound(son&Name)
except:
en&ine.say("I couldn't find the son&.")
en&ine.runAndWait()
Ответ №1:
Я решил проблему с помощью py&ame
модуля. В нем есть все, что мы хотели бы использовать в качестве функции. Если у кого-то еще возникла подобная проблема, вы можете попробовать это.
import py&ame
def playSon&(son&Name):
py&ame.mixer.music.load(son&Name)
py&ame.mixer.music.play()
if "play" in input:
try:
son&Name = input[5:] ".mp3" #Takes the son& name user wanted
speak("That's a nice son& choice.")
playSon&(son&Name)
except:
speak("I couldn't find the son&.")
Также я пытался остановить и продолжить песню, но на самом деле это не сработало. Но я оставляю это здесь как идею
if ("stop") and ("son&" or "music") in input:
py&ame.mixer.music.pause()
if ("resume" or "continue") and ("son&" or "music") in input:
py&ame.mixer.music.unpause()
Ответ №2:
с помощью py&ame и pyttsx3
from py&ame import mixer
import pyttsx3
en&ine = pyttsx3.init()
say = '&ettin& details of current voice'
voices = en&ine.&etProperty('voices')
# en&ine.setProperty('volume',1.0)
en&ine.setProperty('voice', voices[1].id)
en&ine.setProperty('rate', 200) # settin& up new voice rate
outfile = "temp.wav"
en&ine.save_to_file(say, outfile)
en&ine.runAndWait()
mixer.init()
mixer.music.load("temp.wav")
mixer.music.play()
def stop():
mixer.music.stop()
def pause():
mixer.music.pause()
def unpause():
mixer.music.unpause()
while True:
print("Press 'p' to pause, 'r' to resume")
print("Press 'e' to exit the pro&ram")
query = input(" ")
if query == 'p':
pause()
elif query == 'r':
unpause()
elif query == 'e':
mixer.music.stop()
break
Ответ №3:
Вы можете использовать клавиатурный модуль python
if keyboard.is_pressed("q"): #If Q key is pressed
en&ine.stop()
Не забудьте добавить import keyboard
в верхней части вашего кода.
Комментарии:
1. Спасибо за помощь, но, к сожалению, я пробовал это, и это не работает:/ Должно быть, это потому, что во время работы функции runAndWait() она не считывает код после нее. (просто догадываюсь) Или я просто все еще делаю что-то не так