I have an audio WAV file in which there are two speakers. One is a hearing person who has a loud and clear voice, the other one is a deaf person who has a very low voice (In the same audio file). When I listen to the audio file I can hardly hear the voice of the deaf person.
I am building a Speech Recognition system and it fails to detect the sound of the deaf person while it clearly recognizes the voice of the hearing person because the microphone is closer to the hearing person and far away from the deaf person.
How can I increase the volume of the specific portions of the audio file when the deaf person is speaking? Is there any tool for this? or are there any command line solutions?
Related
I have a stereo recording of a word and I have a 2nd recording of the same word being recorded on a mobile device by an end user, also in stereo.
I need to
Convert these both audio files into mono.
Combine these 2 new mono audio files so when the resulting audio file is
played back the end user hears my recording in their left ear (channel) and
their recording in their right ear (channel).
This needs to be done natively for both operating systems (iOS and Android).
Much appreciated if anyone has some example code or thoughts they would like to share with me.
I'm using EZAudio FFT to analyze audio as the iPhone "hears" it. I am listening for high-pitched sounds embedded into music (17 kHz+). When the iPhone hears the sounds with no music, it records the data perfectly and hears the pitch fine. However, when music is playing the sounds are no longer heard--or only 1 in about 8 are heard. Again, I am using EZAudio, to analyze the sound. I have an Android phone that has a similar app on it (displays an graph of Hz for incoming audio waves), but the Android phone can hear these sounds.
Why would the Android phone hear these high-pitched sounds but not the iPhone? Is it because of a flaw in EZAudio or is it due to a higher quality microphone?
The answer is most likely answer is Automatic Gain Control (AGC). This is enabled by default on the microphone, and is useful for telephony or voice recording.
At 17kHz, you're probably already at a frequency at which the microphone is not particularly sensitive, however, in the absence of audio at other frequencies, the AGC will have increase the gain of the microphone. As soon as other frequencies are present, the gain reduces again, and the 17kHz signal is in the noise.
Looking at the EZAudioFFT source code, it doesn't appear to be setting up the AVAUdioSession to use measurement-mode (which disables AGC, and the HPF on the microphone).
You can achieve this with:
NSError *pError = nil;
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeMeasurement];
I want to record user's singing for karaoke. I used audio recorder API of android to record audio. My requirement is to record only user's singing for karaoke, I do not want karaoke getting mixed with user's singing. So I used ear phone to listen to karaoke and record user's singing through ear phone. My problem is, in some of the device karoake gets mixed with users singing. Also audio quality is very bad. I'm using MIC audio source with 8000 frequency and channel in mono. I got little success with audio source camcoder but recorded audio is of low quality. Is there any way to improve audio quality? Also is camcoder is supported in all device? Is there any other way to record only users singing?. Your response will be helpful. Thank you.
We are developing a VOIP application, there is one component which need to record the audio from mic, and play the remote audio to speaker. And we need to do some audio/signal processing for the recorded audio.
But on some android device, the selected mic and speaker is so near, the audio captured from MIC clipping (too loud) because of the audio played by speaker. This cause the captured audio waveform have nonlinear losses, and make the audio/signal processing component doesn't work.
We doesn't want to set AUDIO_STREAM_VOICE_CALL to enable build-in AEC, because it will make the recorded audio sample rate to be 8k while I'd like the recorded audio to be 48k.
So We have consider following solution:
Decrease the mic volume. Base on this SO question and this discussion thread, it seams impossible.
Using specific speaker and mic to make the distance a little bit far, so the mic captured audio volume is low.
So any way to select specific speaker on android platform?
If the distance between microphone and the speaker is crucial here maybe is would be enough to use camera's mic:
MediaRecorder.AudioSource.CAMCORDER
Is this possible to play a pre-recorded sound in speaker or mic during a call.. so that other party could hear it?
Please refer to this first before reading through. The modem processor directly feeds from the mic and since there is not wiring between the app and modem processor, IMHO you cannot route the pre-recorded audio to the other end.
The other party can hear only what the microphone picks up. So, if you play a pre-recorded audio file while in a call on the speaker, and it is loud enough, the mic will pick up the audio and it will be heard at the other end. Not sure if echo cancellation will have an "adverse" effect in this case by eliminating the audio from the speaker.