如何中断 pyttsx3 和 playsound?

How can I interrupt pyttsx3 and playsound?

我正在尝试做一个助手,但是当用户想要播放一首歌时,它会一直播放直到完成。我希望它在用户按下某个键时停止。 engine.say()也是一样。

我找不到中断对他们文档的操作的方法。 pyttsx3 有 engine.stop(),但我无法让它工作。我认为这可能是因为 engine.runAndWait() 但如果我不包括它,机器什么也不会说。我该如何解决这些问题? 如果有办法解决这个问题,我也可以尝试使用另一个模块。

import pyttsx3
from playsound import playsound

if "play" in input:
    songName = input[5:] + ".mp3"
    try:
        playsound(songName)
                
    except:
        engine.say("I couldn't find the song.")
        engine.runAndWait()

您可以使用 python

keyboard 模块
if keyboard.is_pressed("q"): #If Q key is pressed
    engine.stop()

确保在代码顶部添加 import keyboard

我使用 pygame 模块解决了这个问题。它具有我们想要用作功能的所有内容。如果其他人遇到这样的问题,您可以尝试一下。

import pygame

def playSong(songName):
    pygame.mixer.music.load(songName)
    pygame.mixer.music.play()

if "play" in input:
                
    try:
        songName = input[5:]+".mp3" #Takes the song name user wanted
        speak("That's a nice song choice.")
        playSong(songName) 
                        
     except:
         speak("I couldn't find the song.")
         

我也试着让这首歌停止然后继续,但实际上并没有奏效。但我把它留在这里作为一个想法

 if ("stop") and ("song" or "music") in input:
    pygame.mixer.music.pause()

 if ("resume" or "continue") and ("song" or "music") in input:
    pygame.mixer.music.unpause()