我想學習Android開發,我想知道如何從麥克風捕捉音頻,然後改變音頻中的聲音,使其聽起來更粗或更銳利等。 簡而言之:如何記錄和更改參數聲音? (當然在java中)如何在Android上錄製音頻並更改音調?
5
A
回答
5
我實際上在android app that involves audio上工作。錄製音頻是一件容易的事情,你可以主要複製我的代碼。編寫音頻過濾器是一個非常艱鉅的任務,需要數字信號處理的知識和Fast Fourier Transform (FFT)
你可以通過閱讀audio processing in java here.
同時啓動,這裏是錄製音頻在Android代碼:
public String record() {
// please note: the emulator only supports 8 khz sampling.
// so in test mode, you need to change this to
//int frequency = 8000;
int frequency = 11025;
int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
File file = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/reverseme.pcm");
// Delete any previous recording.
if (file.exists())
file.delete();
// Create the new file.
try {
file.createNewFile();
} catch (IOException e) {
throw new IllegalStateException("Failed to create "
+ file.toString());
}
try {
// Create a DataOuputStream to write the audio data into the saved
// file.
OutputStream os = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(os);
DataOutputStream dos = new DataOutputStream(bos);
// Create a new AudioRecord object to record the audio.
int bufferSize = 2 * AudioRecord.getMinBufferSize(frequency,
channelConfiguration, audioEncoding);
AudioRecord audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC, frequency,
channelConfiguration, audioEncoding, bufferSize);
short[] buffer = new short[bufferSize];
audioRecord.startRecording();
Log.e(tag, "Recording started");
long start = SystemClock.elapsedRealtime();
long end = start + 15000;
while (SystemClock.elapsedRealtime() < end) {
int bufferReadResult = audioRecord.read(buffer, 0, bufferSize);
for (int i = 0; i < bufferReadResult; i++)
if (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) {
dos.writeShort(EndianUtils.swapShort(buffer[i]));
} else {
dos.writeShort(buffer[i]);
}
}
Log.e(tag, "Recording stopped");
audioRecord.stop();
bos.flush();
dos.close();
isRecording = false;
return file.getAbsolutePath();
} catch (Exception e) {
Log.e(tag, "Recording Failed:" + e.getMessage());
throw new RuntimeException("Failed to create " + e.getMessage());
}
}
0
相關問題
- 1. 如何更改錄製音頻的音調並保存在背景中?
- 2. 在音頻回調中錄製音頻
- 3. Android - 改變音頻音調
- 4. Android音頻錄製
- 5. Android音頻錄製
- 6. android音頻錄製
- 7. 在錄製音頻時更改語音/音高
- 8. 在Android中播放時錄製聲音並更改其音高?
- 9. 在Android中錄製音頻
- 10. 在Android中錄製音頻
- 11. 在Android中錄製音頻
- 12. 如何在android中錄製音頻?
- 13. 如何在android中錄製FM音頻?
- 14. 如何錄製音頻並在Iphone sdk中播放錄製的音頻?
- 15. 在Android上使用OpenAL錄製音頻
- 16. 在Android上使用Appcelerator錄製音頻
- 17. 在Android上聽不到音頻錄製
- 18. 在Mac上錄製音頻
- 19. 如何更改錄製音頻的音調讓我下面的錯誤
- 20. 如何錄製音頻和寫入音頻數據的android
- 21. 錄製後更改音頻比特率
- 22. 在Android中錄製聲音並播放調製聲音?
- 23. 如何錄製iphone音箱的音頻?
- 24. 如何在Android中錄製音頻時暫停背景音樂
- 25. 如何在Android中錄製語音和音頻MimeType
- 26. 如何使用Android 1.5錄製音頻?
- 27. Android的音頻錄製
- 28. Android音頻錄製錯誤
- 29. 如何更改音頻的音量AVPacket
- 30. 如何錄製音頻?