日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

音频存储格式wav介绍与解析

發布時間:2024/3/26 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音频存储格式wav介绍与解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

音頻格式

音頻格式中 規定了使用多少 bits 來對信號進行編碼。

  • 無壓縮的格式
  • 無損壓縮
  • 有損壓縮

1. wav 音頻格式介紹

微軟 和 IBM 于 1991 年 提出的資源交換的文件格式 RIFF( resource interchange File Format);

wav 是 屬于RIFF 中的一個應用實例;

1.1 RIFF 的組成

RIFF的其他實例還包含了其他的音視頻格式 AVI, 圖像動畫ANI;
RIFF 文件由一個表頭 header, 多個區塊 chunk 組成;

1.2 wav 的組成

打開該網址:

http://soundfile.sapp.org/doc/WaveFormat/

wav 的 Header : 使用 32 位正整數表示整個文件的大小, 故wav 大小不超過 4 GB;

第一個區塊,格式子塊,Format chunk: 記錄了音頻的相關格式信息包括如下:
編碼格式, 通道數,采樣率,Byte Rate 傳輸速率(字節每秒), 塊對齊,

第二個區塊,數據子塊,data chunk :開始存儲音頻的數據,

注意到在數據塊中,左通道和右通道的數據有依次間隔存放的,按照 
左通道1,右通道1,左通道2, 右通道2 這樣的順序依次交替存放;

2. python 讀取 wav 文件,

調用 struct module,

https://docs.python.org/3/library/struct.html?highlight=struct#struct.unpack_from

注意,使用 struct.unpack(),

其中,關鍵點:

  • 字節順序 byte order : 區分高位在前還是低位在前;
  • < 表示, 低位在前;
    >表示,高位在前;

  • 數據類型:
  • H unsigned short  integer 2  

    H 表示無符號的短整形, integer,  占2 個字節;

    I unsigned int integer 4

    I: 表示無符號的整形, integer占4 個字節;

    2.1 struct.unpack() 的使用

    注意到根據字節序來判斷使用的場景,

    byteorder 是big:  即高位在前時, 使用 f.read()直接打開;

    byteorder 是little:  即低位在前時, 使用 struct.unpack() 函數打開;

    import structf = open("./male_audio.wav", mode = "rb") # 以二進制的只讀模式打開該文件;chunk_id = f.read(4) #  文件的前4byte 字節代表 RIFF; print("the chunk id:", chunk_id)# < 代表 低位在前,  I:代表無符號的整數, 4byte; chunk_size = struct.unpack('<I', f.read(4))[0] print("the chunk size :", chunk_size)wav_format = f.read(4) print("the wav format", wav_format)sub_chunck_1_id = f.read(4) print("the first sub chunk id:", sub_chunck_1_id)sub_chunck_1_size = struct.unpack('<I', f.read(4))[0] print("the sub chunk 1 size: ", sub_chunck_1_size)# < 代表 低位在前,  H:代表無符號的短整數, 2個字節; audio_format = struct.unpack('<H', f.read(2))[0] print("the audio format", audio_format) # PCM = 1 (i.e. Linear quantization) # Values other than 1 indicate some form of compression.# Mono = 1, Stereo = 2, etc. num_channel = struct.unpack('<H', f.read(2))[0] print(" the num channel of audio:", num_channel)# sampel rate 8000, 44100, etc. sample_rate = struct.unpack('<I', f.read(4))[0] print("the sample rate: ", sample_rate)#ByteRate == SampleRate * NumChannels * BitsPerSample / 8 byte_rate = struct.unpack('<I', f.read(4))[0] print("the byte rate: ", byte_rate)# BlockAlign == NumChannels * BitsPerSample/8 # The number of bytes for one sample including # all channels. I wonder what happens when # this number isn't an integer? block_align = struct.unpack('<H', f.read(2))[0] print(" the block align:", block_align)# BitsPerSample 8 bits = 8, 16 bits = 16, etc. bits_per_sample = struct.unpack('<H', f.read(2))[0] print("the bits per sample:", bits_per_sample)# ---- the following data sub chunk---sub_chunck_2_id = f.read(4) print("\n the sub chunk 2:", sub_chunck_2_id)sub_chunck_2_size = struct.unpack('<I', f.read(4))[0] print("the sub chunk_2_size:", sub_chunck_2_size)data0 = struct.unpack('<H', f.read(2))[0] print("the first data:", data0)# 這里需要注意, 第一個前4 個字節中, 前兩個 字節代表左聲道, 后兩字節代表右聲道;

    2.2 f.read() 函數的使用:

    # ”讀“的細節操作 # 1. # f.read(字節數):讀取的是字節 # 字節數默認是文件長度;下標會自動后移 # f = open('test.txt','r') # print(f.read()) # f.close()# 2.f.readline([limit]) # 讀取一行數據 # limit # 限制的最大字節數 # f = open('test.txt', 'r') # # content = f.readline()#只讀取一行 # print(content) # # content = f.readline()#只讀取一行 # print(content) # f.close()# 3.f.readlines() # 會自動的將文件按照換行符進行處理 # 將處理好的每一行組成一個列表返回 f = open('test.txt', 'r') cn = f.readlines() for line in cn:print(line, end='') f.close()

    3. 其他存儲格式

    RIFF: 由微軟和IBM提出;
    AIFF : 蘋果公司提出;

    • 無損格式: FLAC
       free lossless audio codec;

    • lossy : 有損格式

    MP3, mostly for music, based on: ? Modified discrete cosine transform (MDCT) ? Sub-band coding ? Advanced Audio Coding (AAC) ? OPUS ? Speex

    總結

    以上是生活随笔為你收集整理的音频存储格式wav介绍与解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美视频一区二区三区四区 | 久久综合导航 | 羞羞色视频| 在线一区观看 | 亚洲精品中文字幕在线观看 | 午夜天堂影院 | 极品探花在线播放 | 久久99视频精品 | 麻豆高清视频 | 成人国产精品免费观看视频 | 成人在线影片 | 国产一区二区三区免费在线观看 | 男人和女人插插 | 国产精品久久久久久久久久 | 亚洲成年人av | 97超碰中文 | 亚洲成人三级 | 在线观看毛片网站 | 国产精品无码一区 | av免费大片 | 日韩精品高清在线观看 | 在线免费视频你懂的 | 久草欧美| 丰满熟妇肥白一区二区在线 | 五月天婷婷丁香 | 精品综合在线 | 国产不卡精品 | 美人被强行糟蹋np各种play | 色干综合| 成人午夜看片 | 激情免费视频 | 中国a一片一级一片 | 日韩欧美一级大片 | 国产日批视频在线观看 | 精品一久久| 男人天堂手机在线观看 | 欧美三级一级片 | 国产性―交―乱―色―情人 | ts人妖在线观看 | 精品人妻少妇嫩草av无码 | 国产精品视频一区二区三区在3 | 18岁免费观看电视连续剧 | 黄色精品 | 久久九九99| 黄色一二三区 | 伊人久久五月天 | 懂色一区二区二区av免费观看 | av无码精品一区二区三区宅噜噜 | 国产欧美一区二区三区视频在线观看 | 一对一色视频聊天a | 天堂福利视频 | av青娱乐| 视频免费观看在线 | 在线视频亚洲 | aaa人片在线 | 国产农村老头老太视频 | 性久久久久久久久久 | 国产麻豆免费视频 | 美女黄色一级 | 日韩一区二区三区在线播放 | 99成人免费视频 | 乖女从小调教h尿便器小说 欧美韩一区二区 | 在线日本中文字幕 | 美女福利在线 | 成人欧美视频在线观看 | 亚洲综合一区二区三区 | 毛片导航 | 国产性猛交| 国产成人超碰人人澡人人澡 | 在线观看无遮挡 | 亚洲第一成网站 | 尤物综合网 | 亚洲天堂五月 | 青青草福利视频 | 99性视频| 日本啊v在线 | 一级女性全黄久久生活片免费 | 久久久免费高清视频 | 蜜桃视频一区二区三区在线观看 | 日韩伊人网 | 午夜精品久久久久久99热 | 亚洲av成人片色在线观看高潮 | 台湾无码一区二区 | 狠狠干伊人网 | 美女黄18以下禁止观看 | 亚洲色图吧| 久久色网站 | 和漂亮岳做爰3中文字幕 | 中文视频一区二区 | 日韩精品在线免费视频 | 欧美一级高清片 | 蜜桃无码一区二区三区 | 国产一级久久 | 严厉高冷老师动漫播放 | 自拍视频第一页 | 久久久男人天堂 | 成人国产视频在线观看 | 国产高清中文字幕 | 我和单位漂亮少妇激情 |