我需要创建一个带有麦克风功能的简单录音的C++应用程序.
我不能说没有足够的音频API来做到这一点!脉冲,ALSA为/ dev/DSP,OpenAL的,等我的问题是什么是当前的 "最佳实践" API?
脉冲似乎得到了大多数现代发行版的支持,但似乎几乎没有文档.OpenAL是否会在不同的发行版中得到支持,还是过于模糊?我错过了吗?
有没有一个简单的答案?
我需要在同一个文件中同时录制3gp/mp4格式的音频和视频文件.当我运行时,我的应用程序文件是创建的,videofile.3gp但视频不会记录到模拟器上的SD卡.视频是否在模拟器上录制?如果我在Android支持的设备上运行此代码,我会看到这些错误吗?
代码和错误如下:
package com.video;
/*
*
* @copy Rights
* audio.java
* sample code for Eminosoft Developerworks Article
* Android developent Team
* www.eminosoft.cm
*
*/
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class video extends Activity {
public MediaRecorder mrec = null;
private Button startRecording = null; …Run Code Online (Sandbox Code Playgroud) 我想用Python录制USB麦克风的短音频片段.我已经尝试了pyaudio,它似乎无法与ALSA通信,而alsaaudio,其代码示例产生了一个不可读的文件.
所以我的问题是:在Python中用USB麦克风录制剪辑的最简单方法是什么?
Android的SpeechRecognizer显然不允许将您正在进行语音识别的输入记录到音频文件中.也就是说,要么使用MediaRecorder(或AudioRecord)录制语音,要么使用SpeechRecognizer进行语音识别,在这种情况下,音频不会记录到文件中(至少不能录制到一个文件); 但你不能同时做到这两件事.
多次询问如何在Android中同时录制音频和进行语音识别的问题,最流行的"解决方案"是录制一个flac文件并使用Google的非官方语音API,允许你发送一个flac通过POST请求提交文件并获取带有转录的json响应. http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/(过时的Android版) https://github.com/katchsvartanian/voiceRecognition/tree/master/VoiceRecognition http:// mikepultz.com/2013/07/google-speech-api-full-duplex-php-version/
这非常有效,但有一个巨大的限制,它不能用于超过大约10-15秒的文件(确切的限制不明确,可能取决于文件大小或可能的单词数量).这使它不适合我的需要.
此外,将音频文件切片为较小的文件不是一种可能的解决方案; 甚至忘记了在正确的位置(不是在一个单词的中间)正确分割文件的困难,对上述web服务api的许多连续请求将随机导致空响应(Google表示每次使用限制为50个请求那天,但像往常一样,他们没有透露明确限制请求突发的实际使用限制的细节.
因此,所有这些似乎表明,在将输入录制到Android中的音频文件的同时获取语音转录是不可能的.
但是,谷歌Keep Android应用就是这么做的.它允许你说话,将你所说的内容翻译成文本,并保存文本和录音(很不清楚它存储在哪里,但你可以重放它).它没有长度限制.
所以问题是:是否有人知道Google如何做到这一点?我会查看源代码,但它似乎不可用,是吗?
我在进行语音识别时嗅探了Google Keep发送和接收的数据包,它肯定不会使用上面提到的语音api.所有流量都是TLS,并且(从外部看)它看起来与使用SpeechRecognizer时非常相似.
那么也许存在将麦克风输入流"分割"(即复制或复用)到两个流中的方式,并将其中一个馈送到SpeechRecognizer,另一个馈送到MediaRecorder?
我正在制作一个使用麦克风录制音频的应用.
如何在genymotion模拟器中启用麦克风?
要么
Android app dev有没有其他好的模拟器?
需要帮助谢谢!
android emulation audio-recording android-emulator genymotion
我有一个问题,使用Android的MediaRecorder记录从麦克风到.m4a文件(AAC-LC,MPEG-4容器)的声音.从API级别18开始,默认采样率从44.1或48 kHz(取决于设备)降至仅8 Hz.如果我使用MediaRecorder.setAudioSamplingRate指定采样率,它会使用指定的速率,但录制中会有很多奇怪的噪音.
在LogCat中,以下警告会不时发生:
(1)标签:AudioSource文本:AudioRecord报告超限
(2)标签:AudioFlinger文本:RecordThread:缓冲区溢出
这是代码:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioChannels(2);
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setAudioSamplingRate(48000); // if not specified, defaults to 8kHz, if specified 44.1 or 48 kHz, lots of noise
recorder.setOutputFile("test.m4a");
try {
recorder.prepare();
recorder.start();
} catch (IOException ioe) {
Log.e(TAG, "IOException", ioe);
} catch (IllegalStateException ise) {
Log.e(TAG, "IllegalStateException", ise);
} catch (Exception e) {
Log.e(TAG, "Exception", e);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
android buffer-overflow audio-recording sampling mediarecorder
我想在使用C#(然后处理该数据)时从我的PC音频线连续采样.采样的最佳方法是什么?
我的目标是暂停录制文件.我在Android开发者网站上看到它但是Media Recorder没有暂停选项.
Java支持以编程方式合并两个音频文件,但在android中它不起作用.
此外,我还使用了所有设备都可以使用的默认设备录音机应用程序,但在三星中,很少有设备没有恢复录制路径.
Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
startActivityForResult(intent,REQUESTCODE_RECORDING);
Run Code Online (Sandbox Code Playgroud)
任何一个有暂停功能的录音帮助.
我正在打电话记录.当我开始记录电话时,不幸的是停止了.&它的错误MediaRecorder启动失败-2147483648.我参考这个答案链接.但我不明白.请告诉我我的代码中有什么问题?这是我的代码.
public class IncomingCall extends BroadcastReceiver {
Context pcontext;
private static MediaRecorder recorder;
private boolean recordedStart = false;
@SuppressWarnings("unchecked")
public void onReceive(Context context, Intent intent) {
pcontext = context;
recorder = new MediaRecorder();
try {
TelephonyManager tmgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
MyPhoneStateListener PhoneListener = new MyPhoneStateListener();
tmgr.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
} catch (Exception e) {
Log.e("Phone Receive Error", " " + e);
}
}
private class MyPhoneStateListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) …Run Code Online (Sandbox Code Playgroud) 使用浏览器Web API,我想设置适合录制音频语音(语音消息)的MediaDevices.getUserMedia 约束属性,例如设置这些参数:
这是我的代码:
const mediaStreamConstraints = {
audio: {
channelCount: 1,
sampleRate: 16000,
sampleSize: 16,
volume: 1
},
video: false
}
navigator.mediaDevices.getUserMedia(mediaStreamConstraints)
.catch( err => serverlog(`ERROR mediaDevices.getUserMedia: ${err}`) )
.then( stream => {
// audio recorded as Blob
// and the binary data are sent via socketio to a nodejs server
// that store blob as a file (e.g. audio/inp/audiofile.webm)
} )
Run Code Online (Sandbox Code Playgroud)
录制的剪辑被抓取并存储(使用MediaRecorderAPI),最终发送到 Nodejs 服务器,其中 blob 被保存为文件并进行处理(该应用程序是一个语音机器人)。
出现问题,WebM 保存的文件没有所需的参数:
$ mediainfo audio/inp/audiofile.webm
General …Run Code Online (Sandbox Code Playgroud) audio-recording ×10
android ×6
audio ×3
alsa ×1
browser ×1
c# ×1
c++ ×1
emulation ×1
genymotion ×1
getusermedia ×1
google-api ×1
linux ×1
mediadevices ×1
microphone ×1
phone-call ×1
pyaudio ×1
python ×1
sampling ×1