亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實(shí)現(xiàn)wav和pcm的轉(zhuǎn)換方式

 更新時(shí)間:2023年05月06日 14:11:41   作者:Jellyfish733  
這篇文章主要介紹了Python實(shí)現(xiàn)wav和pcm的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

wav和pcm的轉(zhuǎn)換(Python版本)

wav和pcm是語(yǔ)音信號(hào)處理中最常見(jiàn)的文件格式,時(shí)常會(huì)遇到需要兩種文件格式的相互轉(zhuǎn)換。

wav存儲(chǔ)的一般是解碼后為[-1, 1]的float數(shù)據(jù),文件頭有44個(gè)字節(jié)記錄文件的采樣率、長(zhǎng)度等等信息。

pcm存儲(chǔ)的是int型整數(shù),不含任何采樣率相關(guān)信息。雖然原理比較簡(jiǎn)單,但是整理后更便于利用。

wav轉(zhuǎn)pcm

原理:將文件頭去掉,數(shù)據(jù)轉(zhuǎn)成int型即可。

import numpy as np
def wav2pcm(wavfile, pcmfile, data_type=np.int16):
? ? f = open(wavfile, "rb")
? ? f.seek(0)
? ? f.read(44)
? ? data = np.fromfile(f, dtype= data_type)
? ? data.tofile(pcmfile)?

pcm轉(zhuǎn)wav

原理:利用wave庫(kù),添加通道信息、采樣位數(shù)、采樣率等信息作為文件頭,pcm數(shù)據(jù)直接寫(xiě)入即可。

import wave
def pcm2wav(pcm_file, wav_file, channels=1, bits=16, sample_rate=16000):
? ? pcmf = open(pcm_file, 'rb')
? ? pcmdata = pcmf.read()
? ? pcmf.close()
? ? if bits % 8 != 0:
? ? ? ? raise ValueError("bits % 8 must == 0. now bits:" + str(bits))
? ? wavfile = wave.open(wav_file, 'wb')
? ? wavfile.setnchannels(channels)
? ? wavfile.setsampwidth(bits // 8)
? ? wavfile.setframerate(sample_rate)
? ? wavfile.writeframes(pcmdata)
? ? wavfile.close()

PCM和WAV音頻格式的區(qū)別及python自動(dòng)轉(zhuǎn)換

WAV和PCM的簡(jiǎn)單介紹

  • PCM

pcm:pulse code modulation,脈沖編碼調(diào)制。將聲音等模擬信號(hào)變成符號(hào)化的脈沖列,予以記錄。是由[0]、[1]等符號(hào)構(gòu)成的數(shù)字信號(hào),未經(jīng)過(guò)任何編碼和壓縮處理。pcm是沒(méi)有壓縮的編碼方式。

  • WAV

wav:wav是一種無(wú)損音頻文件格式,wav都有一個(gè)文件頭,文件頭包括音頻流的【編碼參數(shù)】,而對(duì)音頻流的編碼沒(méi)有硬性規(guī)定,符合ACM規(guī)范的編碼都行,所以wav格式通常只要在其他編碼(pcm、MP3)下,加相應(yīng)的decode(頭文件)就可以轉(zhuǎn)換

關(guān)于音頻的基礎(chǔ)知識(shí)

聲道數(shù)channels

聲道數(shù)即聲音通道的數(shù)目。比如單聲道就是左右聲道播放是同一個(gè)聲音,立體聲可以使左右聲道分工,使聽(tīng)起來(lái)有空間效果。

采樣位數(shù)bits

也可以稱為采樣值或取樣值,或叫采樣精度、位深度,就是將采樣樣本幅度量化。例如8bits就是把縱坐標(biāo)分成2的8次方,即256份。可以衡量聲音波動(dòng)變化的一個(gè)參數(shù)(聲卡的分辨率)

采樣頻率sample_rate

取樣頻率,每秒取得聲音樣本的次數(shù)。頻率越高,聲音的質(zhì)量也就越好,還原也就越真實(shí)。

由于人耳的分辨率很有限,太高的頻率并不能分辨出來(lái)。在16位聲卡中有22KHz、44KHz等幾級(jí),其中,22KHz相當(dāng)于普通FM廣播的音質(zhì),44KHz已相當(dāng)于CD音質(zhì)了,目前的常用采樣頻率都不超過(guò)48KHz

pcm文件所占容量:儲(chǔ)存量=(采樣頻率*采樣位數(shù)*聲道*時(shí)間)/ 8 | (8為單位,字節(jié)數(shù))

互相轉(zhuǎn)換代碼

import wave
import numpy as np
# pcm轉(zhuǎn)wav格式,單聲道,采樣精度,采樣率
def pcm2wav(pcm_file, wav_file, channels=1, bits=16, sample_rate=16000):
    with open(pcm_file,'rb') as f:
        pcmdata = f.read()
    if bits % 8 != 0:
        raise ValueError("bits % 8 must == 0. now bits:"+str(bits))
    wavfile = wave.open(wav_file,'wb')
    wavfile.setnchannels(channels)
    wavfile.setsampwidth(bits // 8)
    wavfile.setframerate(sample_rate)
    wavfile.writeframes(pcmdata)
    wavfile.close()
# wav轉(zhuǎn)pcm格式
def wav2pcm(wav_file, pcm_file, data_type=np.int16):
    with open(wav_file,'rb') as f:
        f.seek(0)
        f.read(44)
        data = np.fromfile(f,dtype=data_type)
        data.tofile(pcm_file)
#wav_file,pcm_file分別是兩種格式文件的讀取(存儲(chǔ))路徑

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python-OpenCV消除圖像中孤立的小區(qū)域操作

    使用Python-OpenCV消除圖像中孤立的小區(qū)域操作

    這篇文章主要介紹了使用Python-OpenCV消除圖像中孤立的小區(qū)域操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Python爬取APP下載鏈接的實(shí)現(xiàn)方法

    Python爬取APP下載鏈接的實(shí)現(xiàn)方法

    這篇文章主要實(shí)現(xiàn)的是批量下載安卓APP。顯然用手點(diǎn)是不科學(xué)的。于是嘗試用Python寫(xiě)了一個(gè)半自動(dòng)化的腳本。所謂半自動(dòng)化,就是把下載鏈接批量抓取下來(lái),然后一起貼到迅雷里進(jìn)行下載,這樣可以快速批量下載。有需要的朋友們可以一起看看吧。
    2016-09-09
  • python中os.remove()用法及注意事項(xiàng)

    python中os.remove()用法及注意事項(xiàng)

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python中os.remove()用法及注意事項(xiàng),有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-01-01
  • python django中8000端口被占用的解決

    python django中8000端口被占用的解決

    今天小編就為大家分享一篇python django中8000端口被占用的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 20行Python代碼實(shí)現(xiàn)一款永久免費(fèi)PDF編輯工具的實(shí)現(xiàn)

    20行Python代碼實(shí)現(xiàn)一款永久免費(fèi)PDF編輯工具的實(shí)現(xiàn)

    這篇文章主要介紹了20行Python代碼實(shí)現(xiàn)一款永久免費(fèi)PDF編輯工具的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • pycharm 實(shí)現(xiàn)本地寫(xiě)代碼,服務(wù)器運(yùn)行的操作

    pycharm 實(shí)現(xiàn)本地寫(xiě)代碼,服務(wù)器運(yùn)行的操作

    這篇文章主要介紹了pycharm 實(shí)現(xiàn)本地寫(xiě)代碼,服務(wù)器運(yùn)行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python繪制分布折線圖的示例

    python繪制分布折線圖的示例

    這篇文章主要介紹了python繪制分布折線圖的示例代碼,幫助大家更好的利用python繪制圖像,感興趣的朋友可以了解下
    2020-09-09
  • python 爬取影視網(wǎng)站下載鏈接

    python 爬取影視網(wǎng)站下載鏈接

    一個(gè)簡(jiǎn)單的爬取影視網(wǎng)站下載鏈接的爬蟲(chóng),非常適合新手學(xué)習(xí),感興趣的朋友可以參考下
    2021-05-05
  • Matplotlib實(shí)現(xiàn)各種條形圖繪制

    Matplotlib實(shí)現(xiàn)各種條形圖繪制

    這篇文章主要介紹了Matplotlib實(shí)現(xiàn)各種條形圖繪制,文章通過(guò)利用 plt.bar 方法實(shí)現(xiàn)各種條形圖繪制,內(nèi)容詳細(xì)具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • 如何利用python之wxpy模塊玩轉(zhuǎn)微信

    如何利用python之wxpy模塊玩轉(zhuǎn)微信

    這篇文章主要介紹了利用python之wxpy模塊玩轉(zhuǎn)微信,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論