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!
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.
public class CapturandoSom {
// record duration, in milliseconds
static final long RECORD_TIME = 60000; // 1 minute
// path of the wav file
File wavFile = new File("C:/Users/Marcos/Desktop/music.wav");
// format of audio file
AudioFileFormat.Type fileType = AudioFileFormat.Type.WAVE;
// the line from which audio data is captured
TargetDataLine line;
/**
* Defines an audio format
*/
AudioFormat getAudioFormat() {
float sampleRate = 16000;
int sampleSizeInBits = 8;
int channels = 2;
boolean signed = true;
boolean bigEndian = true;
AudioFormat format = new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
return format;
}
/**
* Captures the sound and record into a WAV file
*/
void start() {
try {
AudioFormat format = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
// checks if system supports the data line
if (!AudioSystem.isLineSupported(info)) {
System.out.println("Line not supported");
System.exit(0);
}
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format);
line.start(); // start capturing
System.out.println("Start capturing...");
AudioInputStream ais = new AudioInputStream(line);
System.out.println("Start recording...");
// start recording
AudioSystem.write(ais, fileType, wavFile);
} catch (LineUnavailableException ex) {
ex.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
/**
* Closes the target data line to finish capturing and recording
*/
void finish() {
line.stop();
line.close();
System.out.println("Finished");
}
/**
* Entry to run the program
*/
public static void main(String[] args) {
final CapturandoSom recorder = new CapturandoSom();
// creates a new thread that waits for a specified
// of time before stopping
Thread stopper = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(RECORD_TIME);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
recorder.finish();
}
});
stopper.start();
// start recording
recorder.start();
}
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