簡體   English   中英

從.wav文件中提取一段

[英]Extract a segment from a .wav file

我有以下代碼來加載.wav文件並播放它:

import base64
import winsound
with open('file.wav','rb') as f:
    data = base64.b64encode(f.read())


winsound.PlaySound(base64.b64decode(data), winsound.SND_MEMORY)

它播放文件沒有問題,但是現在我想提取一個“塊”,比如說從233到300,然后僅播放該部分。

seg = data[233:300]
winsound.PlaySound(base64.b64decode(seg), winsound.SND_MEMORY)

我得到: TypeError: 'sound' must be str or None, not 'bytes'

PlaySound()需要一個完整的WAV文件,而不是一段PCM音頻數據。 PlaySound()的文檔中,Python的winsound調用的基礎函數:

SND_MEMORY標志指示lpszSoundName參數是指向WAVE文件的內存圖像指針。

(強調)

我建議不要使用WAV文件的內部結構(盡管如果您感興趣的話, 也不太難 ),我建議您使用一種更靈活的音頻庫,例如pygame的。 在那里,您可以使用音樂模塊及其set_pos函數 ,也可以使用Sound類訪問原始音頻數據並按照問題中的建議進行剪切。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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