2012-02-29 15 views
5

हैलो एम वर्तमान में ध्वनि मॉड्यूलेशन से संबंधित एक ऐप कर रहा है मुझे एक ध्वनि रिकॉर्ड करने और एक और आवाज में रिकॉर्ड की गई ध्वनि को संशोधित करने की आवश्यकता है। बात कर रहे टॉम बिल्ली आवेदन की तरह। मैं प्रवाह From HEREरिकॉर्ड ध्वनि और एंड्रॉइड में मॉड्यूटेड ध्वनि खेलते हैं?

और एक अन्य ब्लॉग Blog Address

से अधिक ढेर से एक समाधान की कोशिश की थी लेकिन मैं नहीं मिला कोई idea.Can किसी भी एक कृपया मुझे कुछ विचारों या समाधान दें?

उत्तर

4
पिछले पर

मैं इस मदद मिल सकती है समाधान खोजने के लिए है कुछ एक

http://android-er.blogspot.in/2012/06/implement-voice-changer-by-changing.html

कोड

public class Sound_modActivity extends Activity { 

Integer[] freqset = {11025, 16000, 22050, 44100}; 
private ArrayAdapter<Integer> adapter; 

Spinner spFrequency; 
Button startRec, stopRec, playBack; 

Boolean recording; 

/** Called when the activity is first created. */ 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    startRec = (Button)findViewById(R.id.startrec); 
    stopRec = (Button)findViewById(R.id.stoprec); 
    playBack = (Button)findViewById(R.id.playback); 

    startRec.setOnClickListener(startRecOnClickListener); 
    stopRec.setOnClickListener(stopRecOnClickListener); 
    playBack.setOnClickListener(playBackOnClickListener); 

    spFrequency = (Spinner)findViewById(R.id.frequency); 
    adapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_spinner_item, freqset); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spFrequency.setAdapter(adapter); 

    } 

    OnClickListener startRecOnClickListener 
= new OnClickListener(){ 


    public void onClick(View arg0) { 

    Thread recordThread = new Thread(new Runnable(){ 


public void run() { 
recording = true; 
startRecord(); 
    } 

    }); 

    recordThread.start(); 

    }}; 

OnClickListener stopRecOnClickListener 
= new OnClickListener(){ 


public void onClick(View arg0) { 
recording = false; 
}}; 

OnClickListener playBackOnClickListener 
= new OnClickListener(){ 


public void onClick(View v) { 
playRecord(); 
} 

}; 

private void startRecord(){ 

File file = new File(Environment.getExternalStorageDirectory(), "test.pcm"); 

int sampleFreq = (Integer)spFrequency.getSelectedItem(); 

try { 
    file.createNewFile(); 

    OutputStream outputStream = new FileOutputStream(file); 
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); 
    DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream); 

    int minBufferSize = AudioRecord.getMinBufferSize(sampleFreq, 
AudioFormat.CHANNEL_CONFIGURATION_MONO, 
AudioFormat.ENCODING_PCM_16BIT); 

    short[] audioData = new short[minBufferSize]; 

    AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 
sampleFreq, 
AudioFormat.CHANNEL_CONFIGURATION_MONO, 
AudioFormat.ENCODING_PCM_16BIT, 
minBufferSize); 

    audioRecord.startRecording(); 

    while(recording){ 
    int numberOfShort = audioRecord.read(audioData, 0, minBufferSize); 
    for(int i = 0; i < numberOfShort; i++){ 
dataOutputStream.writeShort(audioData[i]); 
    } 
    } 

    audioRecord.stop(); 
    dataOutputStream.close(); 

    } catch (IOException e) { 
    e.printStackTrace(); 
    } 

    } 

void playRecord(){ 

File file = new File(Environment.getExternalStorageDirectory(), "test.pcm"); 

    int shortSizeInBytes = Short.SIZE/Byte.SIZE; 

    int bufferSizeInBytes = (int)(file.length()/shortSizeInBytes); 
    short[] audioData = new short[bufferSizeInBytes]; 

    try { 
InputStream inputStream = new FileInputStream(file); 
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); 
DataInputStream dataInputStream = new DataInputStream(bufferedInputStream); 

int i = 0; 
while(dataInputStream.available() > 0){ 
audioData[i] = dataInputStream.readShort(); 
i++; 
} 

dataInputStream.close(); 

int sampleFreq = (Integer)spFrequency.getSelectedItem(); 

AudioTrack audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC, 
sampleFreq, 
AudioFormat.CHANNEL_CONFIGURATION_MONO, 
AudioFormat.ENCODING_PCM_16BIT, 
bufferSizeInBytes, 
AudioTrack.MODE_STREAM); 

audioTrack.play(); 
audioTrack.write(audioData, 0, bufferSizeInBytes); 


} catch (FileNotFoundException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
} 

} 
+2

आप यहाँ सवाल का जवाब देने ही नहीं, हमें बताया है कि आप उत्तर जानते चाहते हो सकता है । –

+0

हालांकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, हम चाहते हैं कि आप अपने उत्तर में लिंक किए गए आलेख के आवश्यक हिस्सों को शामिल करें, और [संदर्भ के लिए लिंक] (http://meta.stackexchange.com/q/8259) प्रदान करें। ऐसा करने में विफलता लिंक रोट से जोखिम पर जवाब छोड़ देता है। – Kev

संबंधित मुद्दे