Loading...

android-group-japan@googlegroups.com

[Prev] Thread [Next]  |  [Prev] Date [Next]

[android-group-japan: 1889] Re: マイクからの音声直入力方法について tommy sou Tue Oct 06 20:03:07 2009

はじめまして、ソウです。

下記のソースをご参照してください。

AudioTrack player = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, out_buff_size,
AudioTrack.MODE_STREAM);

AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.MIC,
8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, input_buff_size);

int input_buff_size = 2 * AudioRecord.getMinBufferSize(8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
int out_buff_size = 2 * AudioTrack.getMinBufferSize(8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
int frame_size_in_bytes = 640;

if (input_buff_size < frame_size_in_bytes)
{
input_buff_size = frame_size_in_bytes;
}
if (out_buff_size < frame_size_in_bytes)
{
out_buff_size = frame_size_in_bytes;
}

record.setPositionNotificationPeriod(frame_size_in_bytes >> 1);
AudioCallback callback = new AudioCallback(player, record);

record.setRecordPositionUpdateListener(callback);
                        record.startRecording();
player.play();

byte[] inputBuffer = new byte[frame_size_in_bytes];

// record.read(inputBuffer, 0, input_buff_size);
record.read(inputBuffer, 0, frame_size_in_bytes);

//AudioCallbackの実現:
public class AudioCallback implements OnRecordPositionUpdateListener
{
AudioTrack player = null;
AudioRecord record = null;
final int frame_size_in_bytes = 640;

byte[] inputBuffer = new byte[frame_size_in_bytes];
byte[] outputBuffer = new byte[frame_size_in_bytes];
byte[] encodeBuffer = new byte[frame_size_in_bytes];

int decoded_bytes = 0;
int encoded_size = 0;

AudioCallback(AudioTrack at, AudioRecord ar)
{
player = at;
record = ar;

}

@Override
public void onPeriodicNotification(AudioRecord recorder)
{
record.read(inputBuffer, 0, frame_size_in_bytes);
player.write(outputBuffer, 0, frame_size_in_bytes);
}

@Override
public void onMarkerReached(AudioRecord recorder)
{
}
}

2009年10月6日21:57 のりす <[EMAIL PROTECTED]>:

>
> はじめまして
> 愛知の住人です
>
> Android上でマイクからの音声入力に対して
> リアルタイム性の高いアプリケーションを作りたいと考えています。
>
> マイクから音声をリアルタイムに取る方法として
> audiotrackを使えば直入出力が可能だという
> 書き込みを見かけたり
> マイクからの音声をリアルタイムに処理する
> アプリケーションが実際にあるようなのですが
>
> 具体的にどうしたらよいのか分かりません。
> どなたか分かる方がいれば
> 力を貸していただきたいです。
> よろしくお願いします。
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
このメールは次の Google グループの参加者に送られています: 日本Androidの
会
 このグループにメールで投稿: [EMAIL PROTECTED]
 このグループから退会する: [EMAIL PROTECTED]
 その他のオプションについては、次の URL からグループにアクセスしてくださ
い。 http://groups.google.co.jp/group/android-group-japan?hl=ja
-~----------~----~----~----~------~----~------~--~---