簡體   English   中英

將音頻樣本轉換為可聽文件格式

[英]Converting audio samples into an audible file format

幾天來,我一直在嘗試將大量數據(大約900 MB)轉換為可聽文件格式。 我得到了一個.dat文件,其中包含9億個浮點樣本(每行一個),代表10 MHz時90秒的音樂。

我下采樣到40 KHz,但現在我不知道如何收聽那些字節中隱藏的音頻。 我正在Linux環境中編寫C ++程序,但是如果有人知道如何使用Matlab,Octave,Python,Audacity,MPlayer或任何其他工具來完成此任務,請大聲疾呼:)做出的任何貢獻,我們將不勝感激。

head -n 5 ~/input.dat
    -2.4167
    -7.5322e-016
    -0.2283
     0.13581
    -0.51926

wav文件格式是一種非常簡單的格式

您只需要編寫該鏈接中定義的44字節標頭塊,然后將數據轉換為整數即可。

將采樣率定位為44100 hz(或48000、22050、11025或8000 hz)

將您的音頻樣本轉換為16位有符號整數(-32768至+32767)。

請按照此處有關WAV文件合成的說明進行操作: 從頭開始-WAV文件合成-C

如果您有一個字節序列,並且想要將其轉換為音頻,則只需向其寫入標頭即可。 由於您提到可以使用MatLAB ,因此我建議使用wavwrite命令。 它簡單,經過嘗試和測試,非常適合制作原型。 這是文檔的鏈接:
http://www.mathworks.in/help/matlab/ref/wavwrite.html

如果您正在使用wavwrite可能需要采取以下步驟。
-由於輸入數據是浮點數,因此將文件中的數據縮放到[-1,1]范圍內。
-縮放數據后,即插即用到函數調用中。
-使用wavplay命令播放wav文件。

WAV允許浮點采樣數據和各種采樣率(如果有內存,則以1Hz為增量從1Hz到4.2GHz)。

您無需費心轉換為整數值。 只需適當地設置WAV文件的標頭,然后在數據部分中將32位浮點數作為二進制數據寫入即可。

從存儲的角度來看,對於WAV文件,10MHz的采樣率沒有問題。 但是,播放將需要轉換為硬件可以處理的內容。 這些天的上限通常為96或192 kHz。

暫無
暫無

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

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