sou iniciante em java, gostaria de saber como poderia entrar com algum
som e armazenalo em um banco de dados assim criando um algoritmo de
execução de comando baseado no som (voz)
q classe daria esse suporte?
e alguem tem alguma apostila do JSAPI (freeTTS)?
sou iniciante em java, gostaria de saber como poderia entrar com algum
som e armazenalo em um banco de dados assim criando um algoritmo de
execução de comando baseado no som (voz)
q classe daria esse suporte?
e alguem tem alguma apostila do JSAPI (freeTTS)?
Agora uma dica…
Se você está pensando em criar um banco de dados de áudio para trabalhar com texto pra voz ou voz para texto acho um trabalho interessante porém muito difícil.
Conversei sobre isso com um professor e dei uma pesquisada no assunto, essa API FreeTTS e JavaSpeech, possuem uma gramática da linguagem que ela trabalha (na maioria dos casos Inglês).
Quando você passa uma String para ser sonificada, é feita toda uma verificação de letras, sílabas e fonemas da palavra na gramática da API.
Quando achado o valor equivalente de cada sílaba, este é um conjunto de bits…
Assim, uma palavra pode possuir várias sílabas e quando é verificado cada tipo de som, etc esses bits são concatenados e transformados em um Stream que a API converte para áudio, ou seja…nenhuma API trabalho com arquivos de áudio, o áudio é gerado em tempo de execução.
Talvez isso nem venha a ser o seu caso, mas espero ter ajudado!
Abraço!
T
thiagocsPJ
Realmente não é fácil, estou desenvolvendo um trabalho sobre Reconhecimento Automático do Locutor mas não é nada fácil. Você pode começar abrindo e executando arquivos wave em Java com este código. Te digo que você deve estudar mais sobre reconhecimento de voz do que java.
Boa sorte
importjava.io.*;importjavax.sound.sampled.*;publicclassSoundJava{privateAudioFormatformat;privatebyte[]samples;publicSoundJava(Stringfilename){try{AudioInputStreamstream=AudioSystem.getAudioInputStream(newFile(filename));format=stream.getFormat();samples=getSamples(stream);}catch(UnsupportedAudioFileExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}publicbyte[]getSamples(){returnsamples;}publicbyte[]getSamples(AudioInputStreamstream){intlength=(int)(stream.getFrameLength()*format.getFrameSize());byte[]samples=newbyte[length];DataInputStreamin=newDataInputStream(stream);try{in.readFully(samples);}catch(IOExceptione){e.printStackTrace();}returnsamples;}publicvoidplay(InputStreamsource){// 100 ms buffer for real time change to the sound stream intbufferSize=format.getFrameSize()*Math.round(format.getSampleRate()/10);byte[]buffer=newbyte[bufferSize];SourceDataLineline;try{DataLine.Infoinfo=newDataLine.Info(SourceDataLine.class,format);line=(SourceDataLine)AudioSystem.getLine(info);line.open(format,bufferSize);}catch(LineUnavailableExceptione){e.printStackTrace();return;}line.start();try{intnumBytesRead=0;while(numBytesRead!=-1){numBytesRead=source.read(buffer,0,buffer.length);if(numBytesRead!=-1)line.write(buffer,0,numBytesRead);}}catch(IOExceptione){e.printStackTrace();}line.drain();line.close();}publicstaticvoidmain(String[]args){SoundJavaplayer=newSoundJava("casa.wav");InputStreamstream=newByteArrayInputStream(player.getSamples());player.play(stream);System.exit(0);}}
MarcolaLipe10
Eu estava proucurando algum topico para poder falar em uma maquina e sair no audio de outra maquina (Stream )
Mas me deparei com esse topico !!
Para capturar audio ...
Classe pronta , funcionando !
packagecom.desenv.logica;importjavax.sound.sampled.*;importjava.io.*;publicclassCapturandoSom{// record duration, in millisecondsstaticfinallongRECORD_TIME=60000;// 1 minute// path of the wav fileFilewavFile=newFile("C:/Users/Marcos/Desktop/music.wav");// format of audio fileAudioFileFormat.TypefileType=AudioFileFormat.Type.WAVE;// the line from which audio data is capturedTargetDataLineline;/** * Defines an audio format */AudioFormatgetAudioFormat(){floatsampleRate=16000;intsampleSizeInBits=8;intchannels=2;booleansigned=true;booleanbigEndian=true;AudioFormatformat=newAudioFormat(sampleRate,sampleSizeInBits,channels,signed,bigEndian);returnformat;}/** * Captures the sound and record into a WAV file */voidstart(){try{AudioFormatformat=getAudioFormat();DataLine.Infoinfo=newDataLine.Info(TargetDataLine.class,format);// checks if system supports the data lineif(!AudioSystem.isLineSupported(info)){System.out.println("Line not supported");System.exit(0);}line=(TargetDataLine)AudioSystem.getLine(info);line.open(format);line.start();// start capturingSystem.out.println("Start capturing...");AudioInputStreamais=newAudioInputStream(line);System.out.println("Start recording...");// start recordingAudioSystem.write(ais,fileType,wavFile);}catch(LineUnavailableExceptionex){ex.printStackTrace();}catch(IOExceptionioe){ioe.printStackTrace();}}/** * Closes the target data line to finish capturing and recording */voidfinish(){line.stop();line.close();System.out.println("Finished");}/** * Entry to run the program */publicstaticvoidmain(String[]args){finalCapturandoSomrecorder=newCapturandoSom();// creates a new thread that waits for a specified// of time before stoppingThreadstopper=newThread(newRunnable(){publicvoidrun(){try{Thread.sleep(RECORD_TIME);}catch(InterruptedExceptionex){ex.printStackTrace();}recorder.finish();}});stopper.start();// start recordingrecorder.start();}}
MarcolaLipe10
Agora quem conseguir me ajudar no meu projeto …
Agradeço !!!
Pois está tenso d+ …
Projeto ==>
Falar em uma maquina e o som sair em outra maquina !!
Podendo ser intranet ou internet msmo =)
Obrigado !
R
raghy
ligado a som conheço estes dois métodos....
publicvoidcarregarSom(intposSom){AudioInputStreamsound=null;try{sound=AudioSystem.getAudioInputStream(this.getClass().getResource(colecao_sons[posSom]+".WAV"));}catch(UnsupportedAudioFileExceptione){e.printStackTrace();JOptionPane.showMessageDialog(null,"problema no som","problema no som",JOptionPane.INFORMATION_MESSAGE);}catch(IOExceptione){e.printStackTrace();JOptionPane.showMessageDialog(null,"problema no som","problema no som",JOptionPane.INFORMATION_MESSAGE);}DataLine.Infoinfo=newDataLine.Info(Clip.class,sound.getFormat());try{clip=(Clip)AudioSystem.getLine(info);}catch(LineUnavailableExceptione){e.printStackTrace();JOptionPane.showMessageDialog(null,"problema no som","problema no som",JOptionPane.INFORMATION_MESSAGE);}try{clip.open(sound);}catch(LineUnavailableExceptione){JOptionPane.showMessageDialog(null,"problema no som","problema no som",JOptionPane.INFORMATION_MESSAGE);e.printStackTrace();}catch(IOExceptione){JOptionPane.showMessageDialog(null,"problema no som","problema no som",JOptionPane.INFORMATION_MESSAGE);e.printStackTrace();}}publicvoidtocaSom(){clip.start();}
//arquivos para somprivateClipclip;privateString[]colecao_sons={"CLICK11","MAGNETIC_vitoriaBingo","MUSHY_novojogo","_LASER_trocacartela"};carregarSom(3);tocaSom();
MarcolaLipe10
Pow veio , to tentando aqui agora com JavaScript …
No Html 5 da pra fazer isso !!
Ainda estou nessa guerra !
Pq eu tenho que pegar o audio no pc do cliente e jogar para o outro cliente ouvir …
Sendo que o cliente que vai ouvir , ele apenas ouve , pq é um raspeberry pi …
É um sistema de Audio para pessoas falar e sair nas caixas de som dos respectivos raspberrypi
É um sistema de Audio simplex , sendo que é necessario passar pelo servidor xD