标签: audio-recording

iOS - 检测吹入麦克风并转换结果!(迅速)

我需要在swift中开发一个iOS应用程序来检测用户对麦克风的打击.这必须是一个挑战游戏,两个玩家必须一个接一个地吹入iPhone麦克风.分贝值应该以米或公里为单位进行测量和转换,这样我才能确定胜利者."进一步吹"(球员1:50公里,球员2:70公里)的球员获胜.

这是可能的实施吗?

我在swift中有这个代码,我不知道如何继续:

import Foundation
import UIKit
import AVFoundation
import CoreAudio

class ViewController: UIViewController {
// @IBOutlet weak var mainImage: UIImageView!

var recorder: AVAudioRecorder!
var levelTimer = NSTimer()
var lowPassResults: Double = 0.0
override func viewDidLoad() {
    super.viewDidLoad()
    let url = NSURL.fileURLWithPath("dev/null")
    //numbers are automatically wrapped into NSNumber objects, so I simplified that to [NSString : NSNumber]
    var settings : [NSString : NSNumber] = [AVSampleRateKey: 44100.0, AVFormatIDKey: kAudioFormatAppleLossless, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.Max.rawValue]
    var error: NSError?
   // mainImage?.image = UIImage(named: "flyForReal.png"); …
Run Code Online (Sandbox Code Playgroud)

iphone audio-recording ios swift

10
推荐指数
2
解决办法
8469
查看次数

android中的音频和视频录制错误

我需要在同一个文件中同时录制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)

android video-capture audio-recording

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

尝试从麦克风录制并实时播放

我正在尝试从麦克风录制数据,然后通过扬声器实时播放,并有一些延迟,但我遇到了一些问题.我选择使用python和alsaaudio,我可以在这里找到我遇到问题的当前脚本 .这适用于我迄今为止所拥有的(不是延迟部分),但会产生一些点击.alsaaudio docs有这样的说法:

播放PCM音频问题的最常见原因是对PCM设备的写入必须与设备的数据速率完全匹配.

如果向设备写入的数据太少,则会发生欠载,并且会发出丑陋的咔嗒声.相反,如果将太多数据写入器件,写入功能将阻塞(PCM_NORMAL模式)或返回零(PCM_NONBLOCK模式).

我似乎误解了文档,它说的是关于write():

PCM.write(数据)

在数据中写入(播放)声音.数据长度必须是帧大小的倍数,并且应该与周期的大小完全相同

我脚本中的一段时间是160.

它说关于read():

在PCM_NORMAL模式下,此功能将阻塞直到整个周期可用,然后返回一个元组(长度,数据),其中length是捕获数据的帧数,而数据是捕获的声音帧作为字符串.返回数据的长度为periodicize*framesize字节.

在我的脚本中,period_size*frame_size也应该等于160,但是当我打印长度(元组read()的一部分返回)我得到940.显然我似乎没有传递适量的数据.写(),但我不知道该去哪里.我把这些代码放在一起,主要是通过我发现的例子,我刚开始使用alsaaudio/sound,尝试组合一些有趣的项目,所以我还不知道很多.

我还想从麦克风录制直播,然后以100ms的延迟播放,因此注释了time.sleep().如果我取消注释它,长度似乎反复从940到-32,最终导致out.write()抛出异常(数据不够).

有人能告诉我如何(或我的剧本有什么问题)我会实时录制和播放声音数据,并延迟100毫秒?

python alsa audio-recording playback audio-streaming

9
推荐指数
1
解决办法
2546
查看次数

将流媒体广播录制到MP3

背景

我父亲有一个他喜欢的老电台节目.这是30 - 40年前完成的一系列录音,但现在他发现它们不时被送去作为历史回顾.他爱他们,不想错过任何一个.他渴望录制它们,所以我发现了一个名为CoolRecord的小程序,它可以通过网络播放器从广播中录制.它工作正常,但问题是录音是通过声卡完成的,当他使用Skype与孙子孙女交谈时,他总是搞乱声音设置,当下一次录音会议结束时,一切都很混乱....

理念

现在我最近发现,在通过音频卡之前可以捕获无线电流.这是个好消息!我搜索并找到了广播的网址.在http://www.listenlive.eu/sweden.html上,我发现以下网址看起来很有希望:http://sverigesradio.se/topsy/direkt/1602-hi-mp3.pls.它是一个192 kbps的MP3解码流.

我搜索了网络,发现了几个用于收听广播甚至录音的软件,但是我发现所有基于Windows的软件在通过计算机声卡后都记录了音频流......我实际上找到了一个免费软件,用于Mac正确的事情.它被称为FStream但它没有Windows版本;-)

因此,我的目的是构建一个非常简单的程序,它将始终连接到同一个无线电台并直接捕获流而无需通过声卡.

我想让父亲对它简单易懂:他需要做的就是在他最喜欢的节目时间推出一个红色的大红色按钮!没有麻烦的混乱音频设置,只是一个文件自动保存到他的音频目录.

问题

我更喜欢使用C#.我想.Net类库有一些有用的方法可以帮助我....但我从未使用过无线电流和广播技术.1)如何设置"流监听器"?2)是否可以检测节目标题并自动录制开始/停止?3)如何将流保存为MP3文件?我需要添加标题等吗?4)我是否需要处理流媒体中可能出现的中断?

streaming mp3 audio-recording radio

9
推荐指数
1
解决办法
4746
查看次数

增加录制音频的音量输出

我正在尝试在Android中拨打电话录音应用.我正在使用扬声器记录上行和下行音频.我面临的唯一问题是音量太低.我已经将使用AudioManager的设备的音量增加到最大,并且它不能超越它.

我第一次使用MediaRecorder,但由于它功能有限并提供压缩音频,我尝试使用AudioRecorder.我还没弄明白如何增加音频.我也检查了Github上的项目,但它没用.我在stackoverflow上搜索了最近两周,但根本找不到任何东西.

我很确定这是可能的,因为许多其他应用程序正在这样做.例如自动呼叫记录器就是这样做的.

我知道我必须对音频缓冲区做些什么,但我不太清楚需要做些什么.你能指导我吗?

更新: -
对不起,我忘了提到我已经在使用Gain了.我的代码几乎与RehearsalAssistant相似(事实上​​我是从那里派生出来的).增益不会超过10dB,并且不会过多地增加音量.我想要的是我应该能够听到音频,而不是把我的耳朵放在我的代码中缺少的扬声器上.

我问过关于在SoundDesign SE音量/响度的运作类似的问题在这里.它提到增益和响度是相关的,但它没有设置实际的响度级别.我不确定事情是如何运作的,但我决心获得大声的音量输出.

audio android audio-recording android-audiorecord

9
推荐指数
1
解决办法
9840
查看次数

在genymotion /任何其他好的Android模拟器中启用MIC

我正在制作一个使用麦克风录制音频的应用.

如何在genymotion模拟器中启用麦克风?

要么

Android app dev有没有其他好的模拟器?

需要帮助谢谢!

android emulation audio-recording android-emulator genymotion

9
推荐指数
1
解决办法
8964
查看次数

使用sox进行语音检测和流式传输

目前,我像这样使用sox:

sox -d -e u-law --endian little -b 8 -c 1 -r 8000 -t ul - silence 1 0.3 1% 1 0.3 1%
Run Code Online (Sandbox Code Playgroud)

作为参考,这是从默认麦克风录制音频并以8位和8k速率输出小端,ulaw格式的音频.效果滤波器修剪音频,直到噪声达到阈值0.3秒,然后继续记录,直到有0.3秒的静音.所有这些流到stdout,我用它来流式传输到远程服务器.

当我说完话语时,我正在使用所有这些来记录一些声音并完成.为了触发sox,我使用专门的硬件来触发录制的开始.我可以切换到使用几乎任何音频格式或编解码器,只要它支持即时格式化/编码.我的目标平台是覆盆子pi 2 B上的raspbian.

我理想的解决方案是使用vad在用户讲完后停止录音.我希望即使背景喋喋不休,这也会奏效.但是,关于vad效果的sox文档说明了这一点:

建议使用标准效果,但请记住,反向和标准都不适合与流式音频一起使用.

我无法将参数拼凑在一起以获得vad和流媒体工作.是否可以使用vad效果来停止音频录制,同时仍然保持stdin-> sox-> stdout管道?还有更好的选择吗?

audio audio-recording voice-recording sox raspberry-pi

9
推荐指数
1
解决办法
3287
查看次数

世博会录音webm

我正在使用expo,我试图通过使用webm输出格式(Expo.Audio.RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_WEBM)来记录android .我的问题是我已经尝试了所有不同的编码器,但它们似乎都没有用.我期待vorbis编码器工作(Expo.Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_VORBIS)但我总是得到一个例外

    {
        "tryLoc": "root",
        "completion": {
            "type": "throw",
            "arg": {
                "framesToPop": 1,
                "code": "E_AUDIO_RECORDING",
                "message": "Start encountered an error: recording not started",
                "stack": "Error: Start encountered an error: recording not started\n    at createErrorFromErrorData (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2297:17)\n    at blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2249:27\n    at MessageQueue.__invokeCallback (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2691:18)\n    at blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2436:18\n    at MessageQueue.__guardSafe (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2604:11)\n    at MessageQueue.invokeCallbackAndReturnFlushedQueue (blob:http://172.16.6.80:19001/96c6e3c7-f483-40d9-a3ad-7a7114468a07:2435:14)\n    at http://172.16.6.80:19001/debugger-ui/debuggerWorker.js:72:58"
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试的配置:

const recording = new Audio.Recording();
debugger;
await recording.prepareToRecordAsync({
  android: {
    extension: '.webm',
    outputFormat: Audio.RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_WEBM,
    audioEncoder: Audio.RECORDING_OPTION_ANDROID_AUDIO_ENCODER_VORBIS,
    sampleRate: 44100,
    numberOfChannels: 2,
    bitRate: 128000 …
Run Code Online (Sandbox Code Playgroud)

audio android audio-recording react-native expo

9
推荐指数
1
解决办法
855
查看次数

getUserMedia 的音频质量不佳。任何想法为什么?

我正在尝试在 React Web 应用程序中设置一个录音机来录制大量人群(15 岁以上)的谈话,但似乎无法获得正确的录音质量。我最初尝试通过将以下约束传递给 getUserMedia 来捕获录音:

const constraints = {
  audio: {
    sampleRate: 48000,
    channelCount: 1,
    volume: 1.0,
    echoCancellation: true,
    noiseSuppression: true,
  },
  video: false
}

navigator.mediaDevices.getUserMedia(constraints)
.then( stream => {
  this.processStream(stream);
})

processStream = stream => {
  let options = MediaRecorder.isTypeSupported('audio/webm') ? {
    mimeType: 'audio/webm'
  } : {};

  let recorder = new MediaRecorder(stream, options);

  ...

}
Run Code Online (Sandbox Code Playgroud)

对于大多数录音,录音质量都很好。然而,有时录音会以这种非常糟糕的、失真的、几乎金属般的音质结束。我一直无法弄清楚如何重现效果(我已经开始捕获用户的浏览器,以尝试帮助调试此问题)。

大约一周前,我使用约束 = { audio: true, video: false } 部署了应用程序,但这有时也会产生质量略有失真的录音。到目前为止,没有任何录音像之前的一些录音一样糟糕,但质量仍然没有达到我们想要的水平。

今天,我将约束设置为:

const constraints = {
    audio: {
      echoCancellation: false,
      autoGainControl: false,
      noiseCancellation: …
Run Code Online (Sandbox Code Playgroud)

javascript audio-recording getusermedia web-mediarecorder

9
推荐指数
1
解决办法
2791
查看次数

Android Q,如何用正确的文件名保存MediaStore的录音?

我想将使用我的应用程序录制的 mp3 文件存储到带有 MediaStore 的 Music 文件夹中,用于 Android 10 的新“范围存储”。
此方法效果很好,但文件以时间戳命名(例如 1576253519449),没有.mp3扩展名。
如果我使用文件管理器手动添加扩展名,则文件会被正确记录。
我如何fileName + ".mp3"用来命名文件?

String fileName; //Obtained by intent
MediaRecorder audioRecorder;
Uri audiouri;
ParcelFileDescriptor file;

private void startRecording() throws IOException {
    ContentValues values = new ContentValues(4);
    values.put(MediaStore.Audio.Media.TITLE, fileName);
    values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (System.currentTimeMillis() / 1000));
    values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/mp3");
    values.put(MediaStore.Audio.Media.RELATIVE_PATH, "Music/Recordings/");

    audiouri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
    file = getContentResolver().openFileDescriptor(audiouri, "w");

    if (file != null) {
        audioRecorder = new MediaRecorder();
        audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
        audioRecorder.setOutputFile(file.getFileDescriptor());
        audioRecorder.setAudioChannels(1);
        audioRecorder.prepare();
        audioRecorder.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

另一个问题: …

android file audio-recording mediastore scoped-storage

9
推荐指数
1
解决办法
3437
查看次数