在 Python 中播放聲音


介紹

我們首先來研究 playsound 庫,它為在 Python 中播放聲音檔案提供了一個簡單直接的解決方案。憑藉其最少的設定要求,開發人員可以使用單個函式呼叫快速將音訊播放整合到他們的應用程式中。但是,對於更高階的音訊功能,我們將深入探討兩個流行的庫:pygame 和 pyglet。Pygame 是一個功能強大的多媒體庫,以其處理音訊、圖形和使用者輸入的功能而聞名。

讓我們踏上這段音訊之旅,探索 Python 應用程式中的聲音可能性。

不同的方法

'playsound' 庫

在 Python 中播放聲音檔案的一種快速有效的方法是使用 playsound 包。由於它提供了一個簡單的音訊播放介面,因此無需進行復雜的設定。在繼續操作之前,必須使用 pip 包管理器安裝 playsound 庫。

一切設定完成後,您可以匯入庫並使用 playsound 函式播放音訊檔案。此方法將聲音檔案的路徑作為輸入,並使用系統的內建音訊播放器播放聲音檔案。此外,它還支援 WAV、MP3 和其他音訊格式。

'playsound' 庫還提供其他功能,例如控制音量和阻止程式執行,直到聲音播放完成。這使您可以有效地將聲音播放與程式碼的其他部分同步。

示例

from playsound import playsound 
 
# Provide the path to your sound file 
sound_file = "path/to/your/sound/file.mp3" 
 
# Play the sound file 
playsound(sound_file) 

使用 'pygame' 進行高階音訊播放

雖然 'playsound' 庫足以進行基本的音訊播放,但如果您需要更復雜的功能,可以使用 'pygame' 庫。流行的多媒體庫 Pygame 提供了一套完整的用於管理輸入、圖形和音訊的功能。

要使用 'pygame' 進行音訊播放,您必須透過 pip 安裝它。設定完成後,您可以匯入必要的模組並初始化 pygame 庫以開始使用其音訊功能。

pygame.mixer 模組是 'pygame' 用於音訊播放的重要組成部分之一。它提供了管理多個同時聲音、控制音量以及載入和播放音訊檔案的工具。在使用 "pygame" 播放聲音之前,您必須首先呼叫 pygame.mixer.init() 來初始化 mixer 模組。現在音訊系統已準備好進行播放。

Python 遊戲 mixer。然後,透過將檔案位置作為輸入傳遞給 Sound() 方法,可以載入聲音檔案。載入聲音後,可以使用聲音物件的 play() 函式播放它。您還可以修改播放速度、音量以及迴圈和淡入淡出等效果。

'pygame' 使您能夠除了播放單個聲音之外,還可以控制多個聲音。透過組合聲音並分別調整其音量,可以建立複雜的音訊作品。由於其適應性,'pygame' 對於需要複雜音訊播放的互動式應用程式和遊戲開發來說是一個絕佳的選擇。

示例

import pygame 
 
# Initialize the pygame mixer 
pygame.mixer.init() 
 
# Load a sound file 
sound_file ="path/to/your/sound/file.wav" 
sound = pygame.mixer.Sound(sound_file)  

# Play the sound
 sound.play() 
 
# Wait for the sound to finish playing 
pygame.time.wait(int(sound.get_length() * 1000)) 

使用 'pyglet' 進行高階音訊播放

雖然 'playsound' 庫為 Python 中的基本音訊播放提供了簡單直接的解決方案,但尋求更高階功能和靈活性的開發人員可以轉向 'pyglet'。Pyglet 是一個功能強大的多媒體庫,提供了一套廣泛的用於音訊和影片播放、圖形使用者介面等工具。在本節中,我們將深入探討 'pyglet' 用於高階音訊播放的功能。

Pyglet 透過其 pyglet.media 模組提供了一個高階介面來載入和播放音訊檔案。使用 'pyglet',您可以超越基本的音訊播放,並利用更多高階功能。

'pyglet' 對位置音訊的支援是其最顯著的功能之一。透過在三維環境中模擬聲源,這可以帶來更逼真的音訊體驗。透過定義聲源的位置、速度和方向,您可以建立逼真的音訊環境,聲音似乎來自各個方向和距離。對於遊戲、虛擬現實體驗或模擬等應用程式,此功能特別有用。

'Pyglet' 除了位置音訊之外,還包括音量控制、音調轉換和自定義音訊流等功能。您可以使用音量控制更改特定聲音的音量或建立動態音訊效果。您可以透過音調轉換更改聲音的音調,這對於建立原創音訊效果或更改音訊的播放速度很有用。自定義音訊流使您可以即時設計和修改音訊流,從而實現互動式和動態的音訊體驗。

此外,'pyglet' 在處理各種聲音檔案型別時具有通用性,因為它支援各種音訊格式,包括 WAV、MP3、OGG 和 FLAC。此外,它還提供了用於管理多個同時聲音、流式傳輸音訊以及協調音訊播放與程式其他部分的工具。

Python 程式設計師現在擁有建立逼真的音訊體驗所需的強大功能和工具。無論您是製作需要精確聲源定位的遊戲、需要動態音訊效果的多媒體應用程式,還是嘗試虛擬現實模擬,"pyglet" 都提供了滿足您音訊願景所需的工具。

要利用 "pyglet" 播放聲音,首先必須建立一個 pyglet.media。播放器物件。此物件處理音訊檔案的載入和播放。您可以透過建立 pyglet.media.StaticSource 物件並將檔案路徑作為引數傳遞給它來載入聲音檔案。

載入聲音後,您可以使用播放器物件的 play() 函式播放它。"pyglet" 提供的其他功能包括音調轉換、音量控制以及建立自己的音訊流源的能力。

示例

import pyglet 
 
# Create a pyglet player object 
player = pyglet.media.Player() 

# Load a sound file sound_file = "path/to/your/sound/file.wav" 
source = pyglet.media.StaticSource(pyglet.media.load(sound_file)) 

# Queue the source to the player 
player.queue(source) 

# Play the sound 
player.play() 

# Wait for the sound to finish playing pyglet.app.run() 

結論

Python 提供了多個用於播放聲音的庫和工具,以滿足不同的需求和複雜程度。'playsound' 庫為基本的音訊播放提供了一種簡單直接的方法,而 'pygame' 和 'pyglet' 提供了更高階的功能和靈活性。透過熟練掌握這些庫,您可以輕鬆地將音訊播放整合到您的 Python 專案中,無論這些專案是用於遊戲、互動式應用程式還是多媒體體驗。無論您的程式設計經驗水平如何,Python 的音訊功能都使您能夠設計身臨其境且引人入勝的應用程式,這些應用程式能夠利用聲音的力量。請務必探索這些庫提供的文件和示例,以釋放 Python 中音訊播放的全部潛力。所以,開始嘗試吧,讓您的 Python 程式在您建立的迷人音景中煥發生機。

更新於: 2023年7月24日

5K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告