标签: audio-recording

Android 13 通话双方录音

从 Android 10 开始,我必须使用辅助功能访问,您可以使用具有源语音识别功能的 MediaRecorder 来录制通话。问题是,在某些设备上,录音不是双向的 - 只有一种声音。

这是 MediaRecorder 的基本实现:

MediaRecorder recorder=new MediaRecorder(); 
recorder.setAudioSource(AudioSource.VOICE_RECOGNITION); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC); 
recorder.prepare(); Thread.sleep(2000); recorder.start();
Run Code Online (Sandbox Code Playgroud)

我从 Google Play 测试了 Cube ACR。他们可以选择将音频源设置为“语音识别软件”。如果启用此功能,您可以获取对话的双方。

我在网上没有找到与“语音识别软件”相关的东西。有谁知道如何做到这一点?- 也许是一个 github 项目

有谁有一个可以在新版本的 Android 上录制对话的两个部分的解决方案吗?Android 12 或 Android 13。

谢谢

java android audio-recording call-recording

5
推荐指数
1
解决办法
2463
查看次数

声音处理:应该使用DirectSound还是直接使用Win32 API?

我将在以下位置进行申请:

  • 从麦克风录音并在输入上进行一些实时处理
  • 播放MP3文件(常规歌曲),但实时处理输出
  • 我偶尔也会需要在这首歌上播放其他声音,但是我想我可以通过简单地添加缓冲区来做到这一点。

简而言之,我需要同时具有用于记录和播放的循环缓冲区,并且需要每20毫秒左右将即将播放的新数据“馈入”输出缓冲区。

我一直在看DirectSound,但似乎并没有太大帮助。读取和写入输出缓冲区似乎与Win32非常相似,唯一似乎可以帮助在主歌曲上播放“其他声音”的地方。

我应该使用DirectSound,还是应该直接使用原始Windows API?
DirectSound会为我做任何事情吗?

提前致谢!

audio winapi directsound audio-recording audio-player

4
推荐指数
2
解决办法
9178
查看次数

AS3麦克风录音/保存工作,闪光PCM播放双倍速

我在AS3中有一个工作的麦克风录音脚本,我已经成功地通过AMF将.wav文件保存到服务器.这些文件在任何音频播放器中都能正常播放,没有奇怪的效果.

作为参考,我正在做的是捕捉麦克风的ByteArray :(在一个名为AudioRecorder的类中)

public function startRecording():void {
_rawData = new ByteArray();
_microphone
 .addEventListener(SampleDataEvent.SAMPLE_DATA,_samplesCaptured, false, 0, true);
}

private function _samplesCaptured(e:SampleDataEvent):void {
  _rawData.writeBytes(e.data);
}
Run Code Online (Sandbox Code Playgroud)

这没有问题.录制完成后,我可以使用_rawData变量并通过WavWriter类等运行它.

但是,如果我使用以下代码运行同样的ByteArray作为声音我从adobe cookbook改编:(在一个名为WavPlayer的类中)

public function playSound(data:ByteArray):void {
  _wavData = data;
  _wavData.position = 0;
  _sound.addEventListener(SampleDataEvent.SAMPLE_DATA, _playSoundHandler);
  _channel = _sound.play();
  _channel
    .addEventListener(Event.SOUND_COMPLETE, _onPlaybackComplete, false, 0, true);
}

private function _playSoundHandler(e:SampleDataEvent):void {
  if(_wavData.bytesAvailable <= 0) return;
  for(var i:int = 0; i < 8192; i++) {
    var sample:Number = 0;
    if(_wavData.bytesAvailable > 0) sample = _wavData.readFloat();
    e.data.writeFloat(sample);
  }
}
Run Code Online (Sandbox Code Playgroud)

音频文件以双倍速度播放!我检查了记录比特率等等,我很确定这些都是正确的,我尝试改变缓冲区大小和我能想到的任何其他数字.它可能是单声道与立体声的东西吗?

希望我在这里很清楚,谢谢!

flash wav actionscript-3 audio-recording audio-player

4
推荐指数
1
解决办法
1万
查看次数

在Android中从麦克风录制wav文件 - 问题

我需要能够在Android中使用麦克风创建WAV文件.目前,我遇到了很多麻烦.到目前为止,这是我的情况.我正在使用micDroid项目代码的一部分进行记录:

//read thread


int sampleRate = 44100;
int bufferSize = AudioRecord.getMinBufferSize(sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);
AudioRecord ar = new AudioRecord(AudioSource.MIC,sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT,bufferSize);
short[] buffer = new short[bufferSize];

ar.startRecording();
while(isRunning){
    try{
        int numSamples = ar.read(buffer, 0, buffer.length);
        queue.put(new Sample(buffer, numSamples));
    } catch (InterruptedException e){
        e.printStackTrace();
    }
}


//write thread


int sampleRate = 44100;
WaveWriter writer = new WaveWriter("/sdcard","recOut.wav",sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);
try {
    writer.createWaveFile();
} catch (IOException e) {
    e.printStackTrace();
}
while(isRunning){
    try {
        Sample sample = queue.take();
        writer.write(sample.buffer, sample.bufferSize);
    } catch (IOException e) {
        //snip
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但最终结果可识别地包含我所说的,但它是可怕的扭曲.这是大胆的屏幕上限(WMP拒绝播放文件).

替代文字

任何帮助将不胜感激,如果您需要更多代码/信息,请告诉我. …

java android wav audio-recording

4
推荐指数
1
解决办法
2万
查看次数

在后台iOS中录制分块音频

我试图找出一种在iOS应用程序的后台录制音频并将其流式传输到服务器的方法.

当应用程序处于前台时,我几乎得到了这个功能.我使用AVAudioRecorder记录X秒的输入.一旦我得到完成的回调,我再记录X秒.每个记录会话都存储到不同的文件中,我将这些文件异步发送到服务器.

但是,当我的应用程序进入后台模式时,这似乎不起作用.

当进入后台时,当前记录会话继续记录,直到X秒开始,但是我的应用程序被暂停,然后才能开始另一个记录会话.

有任何想法吗?

这是我的回调代码:

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)aRecorder successfully:(BOOL)flag {
    NSLog(@"hello");

    [self initRecorder];

    [recorder recordForDuration:5];

}
Run Code Online (Sandbox Code Playgroud)

iphone core-audio audio-recording avaudiorecorder ios

4
推荐指数
1
解决办法
2289
查看次数

用于录制用户音频的Javascript库?

这不是另一个"如何在浏览器中录制音频?" 问题......我知道HTML5 Stream API即将来临,Flash已经可以访问用户的麦克风和摄像头了.我只是想知道,作为一个对Flash知之甚少的Javascript开发人员,如果有人开发了一个JS库,它连接到Flash的设备功能进行录制,但是将结果发送回javascript(可能是使用ExternalInterface).

换句话说......像SoundManager2这样的库利用Flash回退进行音频播放,但它们似乎不允许录制.有没有人写过一个使用隐形Flash电影的JS库来录音?

javascript flash audio-recording

4
推荐指数
1
解决办法
3819
查看次数

在iPhone上录制文件最小的音频

我想用iPhone录制音频,然后将其上传到服务器.

我可以录制音频,但我的问题是我应该使用哪种格式来录制音频,以便录制器将生成文件最小的文件.

iphone file-upload objective-c audio-recording ios

4
推荐指数
1
解决办法
9580
查看次数

使用html5上传在浏览器中录制的音频

我是HTML,Javascript和公司的新手,所以请原谅我提出一个可能很明显的问题.

我想建立一个webapp,用户可以上传音频和一些自己的信息.我有一个看起来像这样的表单:

<form method="post" action="/add_recording" enctype="multipart/form-data">
  <label>Name: </label>
  <input type="text" name="user_name" maxlength="20" size="20" value="Joe">
  <br>
  <label>Audio File: </label>
  <input type="file" name="user_audio"/>
  <br>
  <input value="Upload" type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

这可行,但它不是非常用户友好:人们必须弄清楚如何创建自己的音频文件,即使他们知道如何,这很烦人.我想允许用户在浏览器中录制.我找到了https://github.com/mattdiamond/Recorderjshttp://webaudiodemos.appspot.com/AudioRecorder/index.html,这看起来非常酷(暂时忽略了它们只适用于最新版本的铬,据我所知).

我的问题是:我如何修改recorderjs代码,以便记录的blob自动上传到我的表单中,用户无需下载文件并通过单击type ="file"输入手动浏览到它?

我的网络开发技能非常有限,所以我非常感谢任何帮助.我的第一个猜测是自动将音频blob下载到我选择的文件名,并修改表单中的type ="file"输入指向那里,但显然这是不可能的(从我在例如如何设置值中看到的以HTML格式输入文件?).

谢谢,

阿德里安

编辑:这里有一个类似的问题:RecorderJS通过AJAX上传记录的blob.我的问题的一个解决方案是学习AJAX并按照该问题的答案.不过,我有兴趣知道是否有任何方法可以使用老式文件输入(或更普遍的html格式)上传recorderjs音频.

html forms html5 audio-recording

4
推荐指数
1
解决办法
7656
查看次数

在RaspberryPi中捕获/录制音频输入

我为RaspberryPi购买了一个USB音频控制器,以便捕获音频输入.我已经在Rasbian上完成了以下步骤,但仍然不确定音频捕获.你能指导我如何得到它吗?

键入以下命令以安装音频设备

pi@raspberrypi ~ $ sudo apt-get install alsa-utils
Run Code Online (Sandbox Code Playgroud)

成功检测

pi@raspberrypi ~ $ lsusb
pi@raspberrypi ~ $ amixer
pi@raspberrypi ~ $ alsamixer
Run Code Online (Sandbox Code Playgroud)

同时配置USB音频设备以使其成为默认设备

/etc/modprobe.d/alsa-base.conf
Run Code Online (Sandbox Code Playgroud)

通过添加磅/哈希符号

options snd-usb-audio index=2
#options snd-usb-audio index=2
Run Code Online (Sandbox Code Playgroud)

audio-recording raspberry-pi raspbian

4
推荐指数
1
解决办法
1万
查看次数

ffmpeg中带有音频的屏幕截图

我正在使用在Fedora 20的此修订版中从源代码构建的ffmpeg 。

我可以使用以下命令完美录制音频:

FFmpeg/ffmpeg -f alsa -ac 2 -i pulse -- output.wav
Run Code Online (Sandbox Code Playgroud)

但是,当我同时尝试屏幕捕获和音频时,如下所示:

FFmpeg/ffmpeg -video_size 800x600 -framerate 25 -ac 2 -f x11grab -i :0.0+0,0 -ac 2 -f alsa -i pulse -ac 2 -acodec copy output.mpeg -ac 2
Run Code Online (Sandbox Code Playgroud)

我正在获取一个音频通道为0的视频,我可以检查其运行情况 FFmpeg/ffplay output.mpeg

Input #0, mpeg, from 'output.mpeg':
  Duration: 00:00:09.44, start: 0.540000, bitrate: 2743 kb/s
    Stream #0:0[0x1e0]: Video: mpeg1video, yuv420p(tv), 800x600 [SAR 1:1 DAR 4:3], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 25 tbc
    Stream #0:1[0x1c0]: Audio: …
Run Code Online (Sandbox Code Playgroud)

ffmpeg screen-capture audio-recording

4
推荐指数
2
解决办法
6030
查看次数