2011-01-28 18 views
11

Desidero registrare la voce utilizzando un'applicazione Java; Immagino che questa sarà fondamentalmente un'applet che funzionerà sul lato client. Ma non ho idea di come farlo ... qualche idea? Inoltre, voglio suonare la voce registrata.Registrazione vocale con Java

Ho sentito parlare di Java Speech API. Qualche idea se può aiutare?

+0

dai un'occhiata a: http://ditra.cs.umu.se/jmf2_0-guide-html/JMFCapturing.html – pingw33n

+0

@ pingw33n - troppo complesso per capire :( – Varun

risposta

7

Sono in ritardo alla festa, ma qui ci sono i documenti ufficiali di cattura audio: http://docs.oracle.com/javase/tutorial/sound/capturing.html

(e copiati direttamente dal link qui sopra ecco alcuni esempi di codice per farlo :)

TargetDataLine line; 
DataLine.Info info = new DataLine.Info(TargetDataLine.class, 
       format); // format is an AudioFormat object 
if (!AudioSystem.isLineSupported(info)) { 
    // Handle the error ... 

} 
// Obtain and open the line. 
try { 
    line = (TargetDataLine) AudioSystem.getLine(info); 
    line.open(format); 
} catch (LineUnavailableException ex) { 
    // Handle the error ... 
} 

// Assume that the TargetDataLine, line, has already 
// been obtained and opened. 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
int numBytesRead; 
byte[] data = new byte[line.getBufferSize()/5]; 

// Begin audio capture. 
line.start(); 

// Here, stopped is a global boolean set by another thread. 
while (!stopped) { 
    // Read the next chunk of data from the TargetDataLine. 
    numBytesRead = line.read(data, 0, data.length); 
    // Save this chunk of data. 
    out.write(data, 0, numBytesRead); 
} 
+0

nel tuo esempio Ho un errore nella linea interrotta, puoi help me – Abderrahim

+0

Ho scritto più di 4 anni fa ... e l'ho copiato da quell'URL, ma presumo che tu stia riscontrando errori di compilazione? La variabile opped' è essenzialmente un segnaposto per una variabile che dovresti impostare/creare/mantenere altrove per sapere se dovresti aver smesso di registrare. Quindi è molto particolare per il tuo caso. – xbakesx