簡體   English   中英

播放帶有 winsound 問題的隨機 wav 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM