目次へ
声を録音したら、すぐにその声で返事をしてくれるアプリを作りたかったので、 まずは、録音と再生のしかたを、忘れないようにまとめておきます。
今後、これを変更して、「こんにちは」というと、ちょっと違う声で「こんにちは」と 同じ言葉をしゃべってくれるアプリをつくりたいのですが、まだ、いろいろわからないことだらけです。
■■■■音声の録音と再生■■■■
録音はMediaRecorder、再生はMediaPlayerを使います。下のような画面が表示され、開始ボタンで録音開始、終了ボタンで録音終了、再生ボタンで今録音したものが再生されます。
import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.view.View; import android.widget.TextView; import java.io.IOException; public class MainActivity extends AppCompatActivity { private boolean isRecording = false; private TextView text; private MediaRecorder recorder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //textは説明を表示しているTextViewです text = (TextView) findViewById(R.id.text1); } //-------- 開始ボタンを押したときの処理 public void onStart(View view) { if (isRecording) return; //-------- 保存先 「内部ストレージ\test.3gp」ができる String path = Environment.getExternalStorageDirectory() + "/test.3gp"; //-------- Recorder作成 recorder = new MediaRecorder(); //-------- オーディオソースをマイクとする recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //-------- ファイルのフォーマットを3GPPとする recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //-------- エンコーダをデフォルトとする recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); //-------- 出力先ファイル名指定 recorder.setOutputFile(path); //-------- レコーディング try { //-------- 録音開始するには prepare,startを呼び出す recorder.prepare(); recorder.start(); isRecording = true; text.setText("isRecording"); } catch (IOException e) { e.printStackTrace(); } } //-------- 終了ボタンを押したときの処理 public void onStop(View view) { if (!isRecording) { text.setText("録音中ではありません"); return; } //-------- 終了には stop,reset,releaseを呼び出す recorder.stop(); recorder.reset(); recorder.release(); isRecording = false; text.setText("録音終了"); } //-------- 再生ボタンを押したときの処理 public void onPlay(View view) { VoicePlayer player = new VoicePlayer(); player.play(); } } |
import android.content.Context; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Environment; import android.widget.TextView; import java.io.IOException; public class VoicePlayer implements MediaPlayer.OnCompletionListener { private MediaPlayer player = new MediaPlayer(); private String path; public VoicePlayer() { //-------- 再生が終わった時のリスナを設定 player.setOnCompletionListener(this); //-------- 再生ボリューム 左、右を0.0f~1.0fで設定 player.setVolume(1.0f, 1.0f); path = Environment.getExternalStorageDirectory() + "/test.3gp"; } //-------- 再生 public void play() { try { player.setDataSource(path); //-------- 再生するには、prepare、startを呼び出す player.prepare(); player.start(); } catch (IOException e) { e.printStackTrace(); } } //-------- 再生が終わった時に呼び出される public void onCompletion(MediaPlayer mp) { //-------- 終了したら、stop、releaseを呼び出す player.stop(); player.release(); } } |
にほんブログ村
はじめまして。EaseUS SotwareのTeiと申します。
返信削除メールアドレスなどのご連絡先をいただけませんでしょうか。
弊社の製品レビューのご執筆をお願いしたいんですが…
恐縮ですが、メルアド:teiisyou@easeus.comまでご連絡いただけますでしょうか。
お手数ですが、ご覧になったら、このコメントを削除していただけませんか。