2011-12-16 36 views
8

我正在玩高調的聲音。我想用1秒鐘的15Khz突發產生一個MP3文件。有沒有簡單的方法來從C或Python做到這一點?我不想使用MATLAB。使用15Khz音調生成聲音文件

+1

記住的15KHz的音調可具有多種形狀,即正弦波,方波,三角波,鋸齒波等 – dreamlax 2011-12-16 03:50:59

+0

我將是一個解決方案很感興趣,這直接生成mp3。創建一些wave文件並使用lame壓縮它是一個非常明顯但無聊的解決方案。一些小的C編,它可以產生一個帶有任何解碼器可以播放的音調(15kHz或其他)的mp3,真是太棒了。任何MP3文件的極客? – 2011-12-16 09:28:04

回答

14

您可以使用Python的wave模塊創建一個wave文件,然後將其壓縮爲MP3。要創建一個秒鐘15KHZ正弦波:

import math 
import wave 
import struct 

nchannels = 1 
sampwidth = 2 
framerate = 44100 
nframes = 44100 
comptype = "NONE" 
compname = "not compressed" 
amplitude = 4000 
frequency = 15000 

wav_file = wave.open('15khz_sine.wav', 'w') 
wav_file.setparams((nchannels, sampwidth, framerate, nframes, comptype, compname)) 
for i in xrange(nframes): 
    sample = math.sin(2*math.pi*frequency*(float(i)/framerate))*amplitude/2 
    wav_file.writeframes(struct.pack('h', sample)) 
wav_file.close() 
-1

你試過:

#include<dos.h> 
#include<iostream.h> 
#include<conio.h> 
main() 
{ 
    sound(500); // Frequency 
    delay(1000); // Time 
    nosound(); // Stop 
} 
+0

這個庫從過去是如此的激動人心,但它今天運行的平臺是什麼? – 2011-12-16 03:46:37

2

我會打破這種成2件:

  1. 使用C++庫(如libsndfile庫)
  2. 轉換波形文件創建波形文件MP3使用實用工具(如lame)。這是一個命令行工具,可以從你的C程序中調用。請參閱-t將wave轉換爲mp3。

有一點需要注意的是15KHz是非常高的頻率被人類聽到,我猜大多數揚聲器不能播放它,因爲它超過了它們的截止頻率。所以如果你沒有聽到結果,不要感到驚訝。