You definitely need to use a higher sample rate. At 8Khz it will sound
like talking through a phone - very noisy.

-niko

On Sep 15, 3:51 am, Harpreet <[email protected]> wrote:
> Hello everybody
>
> Any thought?
>
> On Sep 13, 9:19 pm, harpreet singh <[email protected]> wrote:
>
>
>
>
>
>
>
> > Hi,
>
> > I am trying to record the voice using AudioRecord class and writing
> > the read bytes to speaker using AudioTrack class. I am able to hear
> > the voice coming from Speaker but the voice is very low and a lot ofnoiseis 
> > coming along with the recorded voice.
>
> > Any solution to resolve this problem to reduce thenoiseand loud the
> > actual voice.
>
> > I am using below code for this:
>
> > package com.my.mic.record;
>
> > import android.media.AudioFormat;
> > import android.media.AudioManager;
> > import android.media.AudioRecord;
> > import android.media.AudioTrack;
> > import android.media.MediaRecorder;
> > import android.util.Log;
>
> > public class Record extends Thread
> > {
>
> >         int numCrossing,p,numSamples,af;
>
> >         static final int bufferSize = 200000;
> >         short[] buffer = new short[bufferSize];
> >         short[] readBuffer = new short[bufferSize];
> >         boolean isRecording;
> >         AudioManager am;
>
> >         public AudioRecord arec;
> >         public AudioTrack atrack;
>
> >         private int sampleRate = 8000;
>
> >         public void run() {
>
> >                 isRecording = true;
>
> > android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URG 
> > ENT_AUDIO);
>
> >                 int buffersize =
> > AudioRecord.getMinBufferSize(sampleRate,AudioFormat.CHANNEL_CONFIGURATION_M 
> > ONO,
> > AudioFormat.ENCODING_PCM_16BIT);
>
> >                 arec = new
> > AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,AudioFormat.CHANNEL_CO 
> > NFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT,
> >                                 buffersize);
>
> >                 //buffersize = arec.getMinBufferSize(arec.getSampleRate(),
> > arec.getChannelConfiguration(), arec.getAudioFormat());
>
> >                 atrack = new
> > AudioTrack(AudioManager.STREAM_MUSIC,arec.getSampleRate(),arec.getChannelCo 
> > nfiguration(),arec.getAudioFormat(),
> >                                 buffersize,AudioTrack.MODE_STREAM);
>
> >                 
> > am.setRouting(AudioManager.MODE_NORMAL,AudioManager.ROUTE_EARPIECE,
> > AudioManager.ROUTE_ALL);
> >                 //am.setMode(AudioManager.MODE_NORMAL);
>
> >                 Log.d("SPEAKERPHONE", "Is speakerphone on? : " +
> > am.isSpeakerphoneOn());
>
> >                 atrack.setPlaybackRate(sampleRate);
>
> >                 byte[] buffer = new byte[buffersize];
> >                 arec.startRecording();
> >                 atrack.play();
> >                 //atrack.setStereoVolume(atrack.getMaxVolume(),
> > atrack.getMaxVolume());
>
> >                 final float frequency = sampleRate;
> >         float increment = (float)((2*Math.PI) * frequency / 44100); //
> > angular increment for each sample
> >         float angle = 0;
> >         //AndroidAudioDevice device = new AndroidAudioDevice( );
>
> >                 while(isRecording) {
>
> >                         try {
>
> >                                 arec.read(buffer, 0, buffersize);
> >                                 atrack.write(buffer, 0, buffer.length);
>
> >                         } catch (Exception e) {
> >                                 Log.d("Record", ""+e);
> >                         }
> >                 }
>
> >                 arec.stop();
> >                 atrack.stop();
> >                 //device.releaseTrack();
> >                 isRecording = false;
> >         }
>
> >         public boolean isRecording() {
> >                 return isRecording;
> >         }
>
> >         public void setRecording(boolean isRecording) {
> >                 this.isRecording = isRecording;
> >         }
>
> >         public AudioManager getAm() {
> >                 return am;
> >         }
>
> >         public void setAm(AudioManager am) {
> >                 this.am = am;
> >         }
>
> >         public void stopRecording(){
> >                 arec.stop();
> >         arec.release();
> >         atrack.stop();
> >         atrack.release();
> >         arec=null;
> >         atrack=null;
> >         setRecording(false);
> >         this.stop();
> >         }
>
> > }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to