2011-12-16 40 views
8

Tôi đang phát xung quanh với âm thanh có độ cao cao. Tôi muốn tạo ra một tập tin MP3 với 1 giây 15Khz bùng nổ. Có cách nào đơn giản để làm điều này từ C hay Python? Tôi không muốn sử dụng MATLAB.Tạo tệp âm thanh với âm 15 Khz

+1

Hãy ghi nhớ rằng một giai điệu của 15kHz có thể có nhiều hình dạng, tức là sin, vuông, tam giác, răng cưa vv – dreamlax

+0

Tôi sẽ thực sự quan tâm đến một giải pháp, mà tạo mp3 trực tiếp. Tạo một số tập tin sóng và nén nó với lame là một giải pháp khá rõ ràng nhưng nhàm chán. Một số prog C nhỏ mà tạo ra một mp3 với một giai điệu (15kHz hoặc bất cứ điều gì) mà có thể được chơi bởi bất kỳ bộ giải mã sẽ là tuyệt vời. Bất kỳ tập tin mp3 geeks ở đây? –

Trả lời

14

Bạn có thể sử dụng mô-đun wave của Python để tạo tệp sóng mà sau đó bạn có thể nén thành MP3. Để tạo một 15kHz thứ hai sóng sin:

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

Các bạn đã thử:

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

Thư viện đó là một vụ nổ từ quá khứ, nhưng những nền tảng nào nó chạy vào ngày hôm nay? –

+7

Làm cách nào để tăng hạng này? Không chỉ các thực hành C cổ xưa (các giá trị trả về tiềm ẩn), mà là nền tảng cụ thể khi không có nền tảng được chỉ định trong các thẻ hoặc câu hỏi ... Cũng không liên quan gì đến việc tạo các MP3. – dreamlax

2

tôi sẽ phá vỡ này thành 2 phần:

  1. Tạo một file sóng sử dụng một Thư viện C++ (như libsndfile thư viện)
  2. Chuyển đổi file sóng để mp3 sử dụng một tiện ích (như lame). Đây là một công cụ dòng lệnh có thể được gọi từ chương trình C của bạn. xem -t để chuyển đổi wave thành mp3.

Một điều cần lưu ý là 15KHz là tần số rất cao được nghe bởi con người và tôi đoán hầu hết các loa không có khả năng chơi vì nó vượt quá tần số cắt của chúng. Vì vậy, đừng ngạc nhiên nếu bạn không nghe thấy kết quả.

+0

+1, nhưng về phạm vi loa, nhiều tai nghe có tần số đáp ứng lên đến 20.000Hz. Có hay không bạn có thể nghe thấy nó là một câu chuyện khác! – dreamlax

Các vấn đề liên quan