[英]Playing random wav files with winsound issue
我對 Python 很陌生。 我一直在嘗試制作一個腳本,每次運行時都會播放來自特定文件夾的隨機 WAV 文件。 如果我嘗試單個 wav 文件,它可以正常工作,但不適用於隨機/文件。 我已經嘗試過 pygame 和其他一些音頻模塊,但每個模塊都出現問題。 例如 pygame 拒絕打開 WAV 或 MP3 文件。 當我打印它時,我可以看到它確實選擇了隨機文件,但 Windows 會發出“帶來”聲音並且不播放音頻。 可能真的很基本,但我不知何故無法解決這個問題。 謝謝您的幫助。
import winsound
import random
import os
winsound.PlaySound(random.choice(os.listdir("D:/randomsoundfolder/dem/")), winsound.SND_ASYNC)
抱歉之前重復發帖。 您可以查看pya,例如: https ://stackoverflow.com/a/60902249/4930109
由於播放 wav 需要 PyAudio(portaudio 的包裝器),對於 windows 用戶,您可以從以下位置安裝輪子: https ://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio
但是,我發現最簡單的方法是使用 Anaconda 來安裝 PyAudio,因為它會安裝非 python 庫:
conda install pyaudio
我建議你使用 Anaconda 來處理你的 Python 環境,因為它會給你一個更干凈的方式來組織每個項目,因為它們可能需要不同的 Python 版本、不同的依賴項等等。 Anaconda 有很多好處。
然后
pip install pya
然后您可以按照第一個鏈接播放 wav 文件。 如果您想播放 mp3,那么您還需要 ffmpeg,請使用 pya ( https://github.com/interactive-sonification/pya ) 獲取有關為您的操作系統安裝 ffmpeg 的說明。
希望這可以幫助。
import winsound
import random
import os
import glob
#Create a placeholder for the soundfile that will be selected
soundfile = ''
# Path to the sound file directory, in this example we will use a random wav file from the Windows Media folder.
path = 'C:\Windows\Media'
# Extract the list of filenames from the path that are wav files only.
soundfiles = glob.glob(path + '\*.wav', recursive=False)
# Loop to print the filenames and create a list of the soundfiles
for filename in soundfiles:
print(filename)
# Pick a random sound file from a list
soundfile = random.choice(soundfiles)
print("Play a random sound")
winsound.PlaySound(soundfile, winsound.SND_ASYNC)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.