Остановите петлю в аудиовыходе

Проблема заключается в том, что когда я использую опцию зацикливания звукового устройства для зацикливания воспроизведения, я не могу остановить его.

import soundfile as sf
import sounddevice as sd

weight = 1.4

data, fs = sf.read('sound.wav')
sd.play(data * weight, fs, blocking=True,loop=True)
sd.stop()

Как остановить цикл, после того как он начался. Можно ли написать такую ​​функцию, чтобы при ее вызове цикл останавливался, а аудиопоток закрывался?

1 ответ

Решение

Проблема в том, что вы устанавливаете blocking=True что не позволяет запускать какие-либо другие функции до выхода. В сочетании с loop=Trueэто создает бесконечный цикл.

То, что вы хотите, это:

import soundfile as sf
import sounddevice as sd

weight = 1.4

data, fs = sf.read('sound.wav')
sd.play(data * weight, fs,loop=True)
sd.stop()

Надеюсь это поможет!

Другие вопросы по тегам