como grabar sonido desde el microfono y guardarlo

tengo bastante tiempo investigando como grabar mi voz desde un microfono, lo cual ocupo para mi proyecto de
la universidad, e revisado muchas paginas i no veo nada claro, por favor si me pueden ayudar, y esque tengo que hacer un traductor
en el cual si no se encuentra la palabra, el usuario debe escribir la palabra y grabar como se pronuncia y todo eso guardarlo ,
por favor si me ayudan, selo agradeseria

este es mi codigo me guarda el sonido pero con el mismo nombre i el aterior se borra ps se sobre escribe,

import java.io.File;
import javax.sound.sampled.*;

public class NewClass {

String[]palabras=new String [100];

AudioFileFormat.Type aFF_T = AudioFileFormat.Type.WAVE;
AudioFormat aF = new AudioFormat(8000.0F, 16, 1, true, false);
TargetDataLine tD;

File f = new File("Grabacion.wav");

public NewClass() {
try {
DataLine.Info dLI = new DataLine.Info(TargetDataLine.class,aF);
tD = (TargetDataLine)AudioSystem.getLine(dLI);
new CapThread().start();
System.out.println("Grabando durante 10s...");
Thread.sleep(10000);
tD.close();
}catch (Exception e) {}
}
class CapThread extends Thread {
public void run() {
try {
tD.open(aF);
tD.start();
AudioSystem.write(new AudioInputStream(tD), aFF_T, f);
}catch (Exception e){}
}
}

me gustaria que me dejara poner el nombre y que lo pudiera abrir
public static void main(String[] args) {
new NewClass(); }
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Lilith

Guardar archivo con otro nombre

Mira yo realmente no he checado tu código, confío en lo que tu me pones (que ya te guarda el archivo, aunque con el mismo nombre)...

Para guardar el archivo con otro nombre y hasta en otro lugar:

En al línea: File f = new File("Grabacion.wav"); tu le dices a tu programa que el archivo se creará en la misma ruta y obvio siempre con el mismo nombre.

Para obtener una ruta distinta utiliza un JFileChooser:

 

El String ruta es la cadena que usarás en sustitución de "Grabacion.wav" . Ojo si el archivo existe se sobreescribirá de cualquier forma, por eso debes de verificar si existe antes de escribirlo, si existe deberás preguntar al usuario si desea sobreescribirlo.

Para verificar si existe:

 

Si el usuario no desea sobreescribirlo tendrás que volver a mostrar el JFileChooser ...

Imagen de Lilith

Ahora en consola

Pues resulta que por andar a las carreras no tome en cuenta que más bien se trata de una aplicación en modo consola (por el System.out.println) ... no hay una única forma, aquí una opción:

 

Para abrir un archivo con el programa adecuado en Linux me funciona:

Process miProceso = Runtime.getRuntime().exec("nombrePrograma rutaArchivo");

Imagen de ezamudio

agregar sufijo

Puedes hacer una rutina para obtener un archivo en el mismo directorio pero que le vaya poniendo un sufijo distinto al nombre, para que cada grabación tenga un número de secuencia...

 

Aunque si tienes 100 archivos del Sonido_1.mp3 al Sonido_99.mp3 (y aparte Sonido.mp3) y borras el Sonido_20.mp3, en tu siguiente ejecución se va a crear el archivo Sonido_20.mp3. Otra opción es que le pegues fecha y hora para que siempre puedas buscar el último, es un proceso similar...

LISTO

OK MUCHAS GRASIAS YA QUEDO SI ME AYUDASTE MUCHO CON LO QUE ME CONTESTASTE, AL FIN QUEDO MI PROGRAMA PARA EXPONERLO , OOH LO DE SYSTEM NO ES QUE LO ESTE ASIENDO EN COSOLA , NOMAS LO PUSE PARA
GUIARME , ES UNA FORMA DE NO REVOLVERME PARA MI, YO ME ENTIENDO I ME AYUDA GRACIAS , PERO GRACIAS OTRA VES