生成15Khz音调的声音文件

时间:2011-12-16 02:55:39

标签: python c audio mp3

我正在玩高音调的声音。我想生成一个1秒15Khz爆发的MP3文件。有没有一种简单的方法从C或Python做到这一点?我不想使用MATLAB。

3 个答案:

答案 0 :(得分:14)

您可以使用Python wave模块创建一个波形文件,然后将其压缩为MP3。要创建一秒钟15 khz正弦波:

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 :(得分:2)

我会将其分为两部分:

  1. 使用C ++库(如libsndfile库)
  2. 创建wave文件
  3. 使用实用程序(如lame)将wave文件转换为mp3。这是一个命令行工具,也可以从C程序中调用。请参阅-t将wave转换为mp3。
  4. 有一点需要注意的是15KHz是人类听到的非常高的频率,我猜大多数扬声器都无法播放它,因为它超出了它们的截止频率。所以如果你没有听到结果,不要感到惊讶。

答案 2 :(得分:-1)

你试过了吗?

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