2011-12-16 31 views
8

Gram z dźwiękiem wysokim. Chciałbym wygenerować plik MP3 z 1-sekundową serią 15Khz. Czy istnieje prosty sposób na to zrobić z C lub Python? Nie chcę używać MATLAB.Generowanie pliku dźwiękowego z dźwiękiem 15Khz

+1

pamiętać, że ton 15kHz może mieć wiele kształtów, czyli sinus, kwadrat, trójkąt, piłę i itp – dreamlax

+0

byłbym bardzo zainteresowany w roztworze, który generuje mp3 bezpośrednio. Tworzenie pliku wave i kompresowanie go lame jest dość oczywistym, ale nudnym rozwiązaniem. Niektóre małe C prog, które generują mp3 z tonem (15kHz lub czymkolwiek), które może być odtwarzane przez każdy dekoder byłoby niesamowite. Jakieś maniaki plików mp3 tutaj? –

Odpowiedz

14

Można użyć modułu Pythona wave do utworzenia pliku wave, który można następnie skompresować do formatu MP3. Aby utworzyć jeden sekund 15kHz sinusoidy:

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

Czy próbowałeś:

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

Ta biblioteka to taki podmuch z przeszłości, ale jakie platformy działają dzisiaj? –

+7

Jak to jest wznawiane? Nie tylko przestarzałe praktyki C (ukryte wartości zwracane), ale specyficzne dla platformy, gdy żadna platforma określona w tagach lub pytaniu ... Nie ma też nic wspólnego z generowaniem plików MP3. – dreamlax

2

chciałbym złamać to na 2 części:

  1. Utwórz plik wave za pomocą C++ biblioteki (jak libsndfile biblioteka)
  2. przekonwertować plik Wave mp3 za pomocą narzędzia (np. lame). Jest to narzędzie linii poleceń, które można wywołać również z twojego programu C. patrz -t do konwersji fali na mp3.

Jedna rzecz, na którą należy zwrócić uwagę to 15KHz to bardzo wysoka częstotliwość, którą człowiek może usłyszeć i wydaje mi się, że większość głośników nie jest w stanie jej odtwarzać, ponieważ przekracza częstotliwość graniczną. Więc nie zdziw się, jeśli nie usłyszysz wyniku.

+0

+1, ale w zakresie głośników wiele słuchawek ma częstotliwości odpowiedzi do 20 000 Hz. Niezależnie od tego, czy możesz go usłyszeć, to inna historia! – dreamlax

Powiązane problemy