生成一个15Khz吨的声音文件

2024-04-25 20:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩高音。我想生成一个1秒15Khz的MP3文件。有没有一种简单的方法可以从C或Python中实现呢?我不想用MATLAB。在


Tags: 文件方法mp3matlab高音
3条回答

我要把它分成两部分:

    使用C++库(如libsndfile库)< /LI>创建wave文件
  1. 使用实用程序(如lame)将wave文件转换为mp3。这是一个命令行工具,也可以从C程序调用。请参见-t将wave转换为mp3。在

有一点需要注意的是,15KHz是非常高的频率,可以被人听到,我猜大多数扬声器不能播放它,因为它超过了他们的截止频率。所以,如果你没有听到结果,不要惊讶。在

您是否尝试过:

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

您可以使用Python的^{}模块创建一个wave文件,然后将其压缩为MP3。要创建1秒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()

相关问题 更多 >