|
From: Jan S. <ha...@st...> - 2013-01-29 17:33:41
|
On Jan 29 18:01:17, onk...@gm... wrote: > Hello, > > i am programming an Voicerobot (in BASH and PERL) who can start PCs, remind > me of things, can tell me how the weather is and so on. (like JARVIS in > Iron Man) Much more things will be added in future. > > The Robot is ready, but i have a problem with the record of my voice. For > now i record the voice with following command: > rec -c 1 -r 16000 -t flac temp/rec$i.flac silence 1 0.1 7% 2 1.0 5% > (the flac format and 16k rate is given by the speech-to-text engine) What speech-to-text engine? > The recording of the voice work in a loop because he should listen all the > time and not when i push a button or something else. Ah, so it listens all the time, and when you speak a command, it rewrites the command to an actual shell command, and runs it. Right? > This work good in close ranges to the microphone. But when i go far away > the speech-to-text engine isn't able to understand me. That's understandable. What speech-to-text engine? > Because the speech-to-text engine is in the internet, i build a filter just > send records where voice is supposed. I grep the "Rough frequency:" value > of following command: > sox temp/rec$i.flac -n stat You mean, you only send voice to be processed if it is roughly in the spectrum of human speech, right? > Now my questions: > Is there a way to determine if the voice is near or far away and when its > far away, boost the voice frequency or something like that? There is weeak signal and strong signal, whether it is due to the source being far away or not. You can use a band filter to only record the frequency range of the human voice, and then use the compander to make the signal somehow uniformly strong. |