![](/img/trans.png)
[英]Why does this double buffering scheme generate audible clicks each time the audio file is read from disk?
[英]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
將采樣率定位為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.