資源簡介
python實現音頻添加隱寫數據
1. 解析音頻格式:
通過python自帶的wav音頻格式進行音頻解析與輸出
通過pydub解析任意格式音頻進行解析,最后輸出為wav格式音頻文件
2. 添加隱寫數據:
將解析的音頻轉為二進制并通過lsb算法進行隱寫內容在最低位的添加
為了增強音頻水印的魯棒性,在通過判斷音頻文件的大小后選擇相應的范圍數添加隱寫數據
從而使音頻即便被截斷也可通過相似度方式查看是否包含隱寫數據
代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
import?wave
from?time?import?time
import?math
from?pydub?import?AudioSegment
import?lsb_interleave_bytes?lsb_deinterleave_bytes
#?通過解析wav文件進行隱寫內容添加并輸出添加后的文件(python中默認解析wav格式)
#?sound_path:音頻路徑??file_data:隱寫內容??output_path:文件輸出路徑??num_lsb:替換最低有效位位數
def?add_steg_in_wav(sound_path?file_data?output_path?num_lsb):
????start?=?time()??#?計算程序總運行時間
????sound?=?wave.open(sound_path?“r“)??#?讀取文件
????params?=?sound.getparams()??#?獲取文件參數
????num_channels?=?sound.getnchannels()??#?單雙聲道
????sample_width?=?sound.getsampwidth()??#?字節寬度
????num_frames?=?sound.getnframes()??#?采樣頻率
????#?每個文件可以隱藏最多的num_lsb位
????num_samples?=?num_frames?*?num_channels
????max_bytes_to_hide?=?(num_samples?*?num_lsb)?//?8
????file_data_size?=?len(file_data)
????print(f“Using?{num_lsb}?LSBs?we?c
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-08-14?05:48??AudioStegWaterMark-master\
?????文件????????4823??2019-08-14?05:48??AudioStegWaterMark-master\audio_steg_util.py
?????文件????????2844??2019-08-14?05:48??AudioStegWaterMark-master\lsb_steg_util.py
?????文件?????????733??2019-08-14?05:48??AudioStegWaterMark-master\readme.md
?????文件????????1279??2019-08-14?05:48??AudioStegWaterMark-master\test.py
評論
共有 條評論