2012-02-29 44 views
5

Xin chào Hiện tại đang thực hiện một ứng dụng liên quan đến điều chế âm thanh Tôi cần biết Cách ghi âm Một âm thanh và điều chỉnh âm thanh đã ghi trong một giọng nói khác. Giống như ứng dụng Talking Tom Cat. Tôi đã cố gắng Một giải pháp Từ stack trên dòng From HEREGhi lại âm thanh và phát âm thanh được điều chế trong Android?

Và Từ Một Blog Blog Address

Nhưng tôi đã không nhận Bất kỳ idea.Can Bất kỳ một xin vui lòng cho tôi một số ý tưởng hoặc giải pháp?

Trả lời

4

cuối cùng tôi phải tìm ra giải pháp này có thể giúp một số một

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

đang

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

Bạn có thể muốn trả lời câu hỏi ở đây, không chỉ nói với chúng tôi rằng bạn biết câu trả lời . –

+0

Trong khi điều này về mặt lý thuyết có thể trả lời câu hỏi, chúng tôi muốn bạn bao gồm các phần thiết yếu của bài viết được liên kết trong câu trả lời của bạn và cung cấp [liên kết để tham khảo] (http://meta.stackexchange.com/q/8259). Không làm điều đó để lại câu trả lời có nguy cơ bị thối liên kết. – Kev