Mikrofonpegel rausfinden

K

Kele87

Gast
Hallo,

kennt jemand eine Möglichkeit den Pegel des Mikrofons in Java rauszufinden ?
Tagelanges googeln hat nichts gebracht und jetzt wende ich mich verzweifelt an euch :(
Ich brauche es super super dringend für ein Projekt welches ich an der Uni mache und
ich krieg es einfach nicht auf die Reihe.
Ich habe gelesen dass es zur Not über die WinAPI gehen würde - aber erstens kenne ich mich
mit dieser nicht aus und über die Dokumentation bin ich auch nicht weit gekommen,
außerdem weiß ich nicht wie ich diese in Java ansprechen kann.
Es wäre super wenn mir jemand ein wenig Hilfestellung geben könnte...

Vielen vielen Dank im Voraus

LG, Patrick
 
K

Kele87

Gast
Hey, erstmal vielen Dank für deine Hilfe.
Ich bin jetzt auch schon etwas weiter gekommen, aber es will noch nicht so richtig funktionieren.

Das hier ist der Code den ich bisher habe. In Zeile 198 wird TargetLineData.GetLevel () ausgegeben welches angeblich
das gesuchte liefern sollte... das Problem ist, dass immer -1 zurückgegeben wird, welches vermutlich für AudioSystem.NOT_SPECIFIED steht.
Nun ist die Frage was ich tun muss damit tatsächlich die Amplitude zurückgegeben wird.
Das gleiche Problem wurde auch von anderen schon in anderen Foren gestellt aber leider findet sich nie eine Antwort dazu -.-
Ich hoffe das ändert sich hier und heute lol :)

[Java]
import java.io.IOException;

import java.io.File;



import javax.sound.sampled.DataLine;

import javax.sound.sampled.TargetDataLine;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.LineUnavailableException;

import javax.sound.sampled.AudioFileFormat;



public class SimpleAudioRecorder

extends Thread

{

private TargetDataLine m_line;

private AudioFileFormat.Type m_targetType;

private AudioInputStream m_audioInputStream;

private File m_outputFile;







public SimpleAudioRecorder(TargetDataLine line,

AudioFileFormat.Type targetType,

File file)

{

m_line = line;

m_audioInputStream = new AudioInputStream(line);

m_targetType = targetType;

m_outputFile = file;

}



public void start()

{

m_line.start();

super.start();

}

public void stopRecording()

{

m_line.stop();

m_line.close();

}

public void run()

{

try

{

AudioSystem.write(

m_audioInputStream,

m_targetType,

m_outputFile);

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{





String strFilename = "c:/test.wav";

//String strFilename = args[0];

File outputFile = new File(strFilename);





AudioFormat audioFormat = new AudioFormat(

AudioFormat.Encoding.PCM_SIGNED,

44100.0F, 16, 2, 4, 44100.0F, false);

DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat);

TargetDataLine targetDataLine = null;

try

{

targetDataLine = (TargetDataLine) AudioSystem.getLine(info);

targetDataLine.open(audioFormat);

}

catch (LineUnavailableException e)

{

out("unable to get a recording line");

e.printStackTrace();

System.exit(1);

}

AudioFileFormat.Type targetType = AudioFileFormat.Type.WAVE;

SimpleAudioRecorder recorder = new SimpleAudioRecorder(

targetDataLine,

targetType,

outputFile);

out("Press ENTER to start the recording.");

try

{

System.in.read();

}

catch (IOException e)

{

e.printStackTrace();

}

recorder.start();

out("Recording for 5 seconds");


long a = System.currentTimeMillis();

while ((System.currentTimeMillis() - a) < 5000){

System.out.println(targetDataLine.getLevel());

}

//

recorder.stopRecording();

out("Recording stopped.");

}


private static void out(String strMessage)

{

System.out.println(strMessage);

}

}
[/Java]
 
K

Kele87

Gast
und wieder bin ich ein wenig weiter gekommen...

es scheint dass die funktion noch nicht implementiert ist und deswegen immer -1 zurückgibt
habe auch mal versucht den datenstrom selbst auszulesen und mit der vorgegebenen beschreibung
das signal selbst zu verarbeiten aber irgendwie scheint der unterschied zwischen
"nicht sprechen" = rauschen und "sprechen" nicht gerade signifikant bei einem handelsüblichen mikrofon :(

zumindest nicht wenn man es so berechnet wie hier beschrieben -.-

Java Sound Resources: FAQ: Audio Programming



kennt denn niemand eine möglichkeit die eingehende lautstärke des mikrofons zu erhalten ?? :(
 

Ähnliche Java Themen

Neue Themen


Oben