Итак, нам было поручено написать небольшую программу, которая воспроизводит песню для пользователя, а затем попросить их угадать жанр песни, после чего программа спрашивает, хотят ли они услышать другую песню или хочет ли она выйти. Проблема, с которой я сталкиваюсь, - это когда программа сначала воспроизводит песню. Сначала он печатает название викторины и спрашивает пользователя, хотят ли они услышать песню, или выйти из викторины, введя «-1». Однако, если пользователь хочет играть песню, он воспроизводит песню, но после продолжения клипа не переходит к следующей части викторины (угадывая жанр). Программа просто остается в этом режиме воспроизведения, и я ничего не могу сделать, введя cntrl + C.Когда я играю WAV в python, программа не останавливается, когда файл заканчивается, оставляя программу невосприимчивой
Я неуклонно искал ответы на эту проблему, я написал более простые программы, чтобы узнать, продолжит ли это когда-нибудь воспроизведение песни, даже спросив моего лектора о проблеме (у него не было ответов для меня странно). Вот мой код (playWav2 является pyaudio скрипт для воспроизведения файла WAV):
import playWav2 as pw
#Here I am providing the list of genres and songs for the program to take info from.
#I am using "s" for the song list, and "i" for the genre list.
genre_list=['melodic punk','alt rock','drum and bass','house','punk rock']
song_list=["Welcome to Paradise.wav","Worry Rock.wav","Propane Nightmares.wav","Lalula.wav","Life During Wartime.wav"]
i=0
s=0
#Here I am providing the participant with the ability to play a song
decision=input("Guess the genre of the song! (enter any key to play a song. Enter -1 to finish the quiz)")
if decision == '-1':
exit()
else:
pw.play(song_list[s])
#Here I am showing the participant the list of possible genres to choose from.
print("heres a list of my favorite genres!")
print(genre_list)
#Here the participant guesses the genre
genre=input("What genre do you think that was?")
#If the genre is correct, it plays the next song, if it is not in genre_list, it stops.
while genre == genre_list[i]:
print("Great guess! %s is correct!"%(genre))
choice=input("Ok, so now that you got that right, ready to try another? (y/n)")
if choice.lower() == 'y':
i+=1
i%=5
pw.play(song_list[s])
else:
break
Вот код playWav2:
""" Play a WAVE file. """
import pyaudio
import wave
chunk = 1024
def play(song):
wf = wave.open(song, 'rb')
p = pyaudio.PyAudio()
# open stream
stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
channels = wf.getnchannels(),
rate = wf.getframerate(),
output = True)
# read data
data = wf.readframes(chunk)
# play stream
while data != '':
stream.write(data)
data = wf.readframes(chunk)
stream.stop_stream()
stream.close()
p.terminate()
Каков минимальный скрипт, который не работает? См. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) –
Поиск [playWav2] (https://www.google.co.uk/search?q= playWav2 + python) появляется три ссылки, одна из которых является вопросом –
Эй! Это простой сценарий, который я сделал, чтобы увидеть, продолжит ли он воспроизведение WAV. 'Импорт playWav2 в PW pw.play ("Добро пожаловать в Paradise.wav") печать ("сделал это работает?")' – AaronK5521