标签: audio-recording

如何在插入 3.5 毫米插孔以使用外部麦克风录制声音时使用内部扬声器播放声音

我现在正在编写一个应用程序,以便在用户进行一些练习时通过内部扬声器提供声音反馈。

现在我想添加一个功能来记录用户的心跳并通过一个由 3.5 毫米插孔插入手机的听诊器呼吸。问题是当我插入插孔时,扬声器不会播放任何声音,因为手机认为耳机已连接并且声音将通过它们播放。

我想要实现的是通过插入手机的听诊器录制声音,同时通过内置扬声器播放声音。

基本上我使用两种方法来播放声音,MediaPlayer 和 TextToSpeech。

我在互联网上搜索,找到了这些文章:

在Android中强制通过扬声器输出声音

想在蓝牙耳机上播放TTS

他们告诉我要做的是添加权限 MODIFY_AUDIO_SETTINGS 到清单

声明变量:

MediaPlayer mediaPlayer; 
AudioManager mAudioManager;
HashMap<String, String> mHashAlarm = new HashMap<String, String>();
Run Code Online (Sandbox Code Playgroud)

在 OnCreate 方法中?

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setSpeakerphoneOn(true);
mediaPlayer = MediaPlayer.create(context, R.raw.ding);
mHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC));
...
tts.speak(text, TextToSpeech.QUEUE_FLUSH, mHashAlarm);
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用。

有谁知道如何实现这个功能?任何想法都会有很大帮助。谢谢。

android audio-recording speaker

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

如何在 Android 中接收 Audiorecord 的硬件时间戳?

我需要检索AudioRecord class读取缓冲区的时间戳。我需要以毫秒为单位跟踪时间。我尝试在读取缓冲区后添加时间戳检索,但是当我收到下一个缓冲区时,检索它所需的时间可能会波动很大。有没有办法从回调中接收录制音频的时间?

int bufferReadResult = audioRecord.read(buffer, 0,blockSize);
            long startTime = System.nanoTime()/ 1000; 
Run Code Online (Sandbox Code Playgroud)

是我目前正在尝试的。

audio android audio-recording nanotime audiorecord

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

参考错误:AudioContext 未定义

我正在尝试使用 RecorderJS 库(https://github.com/mattdiamond/Recorderjs),它要求我有一个 AudioContext。但是,在我的脚本开头声明 AudioContext 时,我在页面加载时在控制台中收到一条错误消息,显示“ReferenceError:AudioContext 未定义”。像其他人一样遇到过这样的 AudioContext 问题吗?我已经发布了我的 JS 片段和包含所有内容的 HTML。提前致谢!

JS:

var audioContext = new AudioContext();
var audioInput = null, inputPoint = null, audioRecorder = null;

$(document).ready(function(){
    // recording stuff
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<!DOCTYPE html>
<html>
    <head>
        <title>Recording</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link rel='stylesheet' type='text/css' href='stylesheet.css'/>
        <script src="http://cwilso.github.io/AudioContext-MonkeyPatch/AudioContextMonkeyPatch.js"></script>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
        <script src="recorder.js"></script>
        <script src="script.js"></script>
    </head>
    <body>
        <button class="record" type='button'>Record</button>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

html javascript audio audio-recording webkitaudiocontext

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

Java Sound API 是否可以访问其他(非 Java)应用程序正在播放的声音?

过去几周我一直在阅读 Java Sound API,但我仍然不知道这是否可行。我之所以这么问是因为我想编写一个程序,该程序将通过系统的声音数据传送到输出线路,例如计算机的扬声器或耳机插孔,并将该数据写入音频文件。

从我读迄今约javax.sound.sampled,好像我可以从数据只读Mixer通过TargetDataLine; 然而,在编写了一个测试程序(下面提供)来查询我的系统以获取可用的混合器,然后查询这些混合器以获取可用的目标和源数据线;我意识到我所有的输出混音器除了我的默认混音器只支持SourceDataLines。此外,我无法判断TargetDataLine计算机的默认混音器(我有一台 Macbook pro)是否可以读取从其他应用程序发送到混音器的音频数据。所以在我深入研究这个项目之前,我想弄清楚是否有可能访问其他应用程序通过混音器发送的声音。

测试程序

import javax.sound.sampled.*;
import java.util.Scanner;

public class Capture {
    public static final String ANSI_RED = "\u001B[31m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_RESET = "\u001B[m";

    private Mixer mixer;

    public Capture() {
        Mixer.Info[] installedMixers = AudioSystem.getMixerInfo();
        for(int n = 0; n < installedMixers.length; n++) {
            System.out.println(ANSI_GREEN + "[" + n + "] " + ANSI_RESET + …
Run Code Online (Sandbox Code Playgroud)

java audio javasound audio-recording

5
推荐指数
0
解决办法
983
查看次数

从麦克风输入录制现场音频并同时保存

我正在尝试用C#开发录音机.我尝试过很多方法,比如NAudio,DirectX,Microsoft.Xna.Framework.Audio等.

一切都给出了相同的结果.我们停止录制后,输出文件mp3/wav得到保存.

mp3/wav文件在开头自己创建(没有和内容 - 0字节)

我正在尝试创建一个可以实时/同时保存音频的应用程序.

    private void StartRecording() {
        this.WaveSource = new WaveInEvent { WaveFormat = new WaveFormat(44100, 1) };

        this.WaveSource.DataAvailable += this.WaveSourceDataAvailable;
        this.WaveSource.RecordingStopped += this.WaveSourceRecordingStopped;

        this.WaveFile = new WaveFileWriter(@"C:\Sample.wav", this.WaveSource.WaveFormat);

        this.WaveSource.StartRecording();
    }

    private void StopRecording() {
        this.WaveSource.StopRecording();
    }

    void WaveSourceDataAvailable(object sender, WaveInEventArgs e) {
        if (this.WaveFile != null) {
            this.WaveFile.Write(e.Buffer, 0, e.BytesRecorded);
            this.WaveFile.Flush();
        }
    }

    void WaveSourceRecordingStopped(object sender, StoppedEventArgs e) {
        if (this.WaveSource != null) {
            this.WaveSource.Dispose();
            this.WaveSource = null;
        }

        if (this.WaveFile != null) {
            this.WaveFile.Dispose();
            this.WaveFile …
Run Code Online (Sandbox Code Playgroud)

c# directx xna audio-recording naudio

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

Android在进行语音识别时录制音频

我正在使用Android上的第三方云服务进行语音识别,并且它适用于Android API SpeechRecognizer.代码如下:

    Intent recognizerIntent =
            new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);

    // accept partial results if they come
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);

    //need to have a calling package for it to work
    if (!recognizerIntent.hasExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE)) {
        recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.example.speechrecognition");
    }
    recognizer = SpeechRecognizer.createSpeechRecognizer(context);
    recognizer.setRecognitionListener(this);
    recognizer.startListening(recognizerIntent);
Run Code Online (Sandbox Code Playgroud)

同时,我想用不同的音频设置录制音频,如频率,频道,音频格式等.然后我会不断分析这个音频缓冲区.我使用AudioRecord来达到目的.这只适用于我关闭语音识别.

如果我同时录制音频和语音识别,则会发生错误.

E/AudioRecord: start() status -38
Run Code Online (Sandbox Code Playgroud)

如何实现这种功能,我也试过原生音频 - SLRecordItf,也行不通.

android speech-recognition audio-recording

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

AnalyserNode 的 getFloatFrequencyData 与 getFloatTimeDomainData

所以我觉得我理解getFloatFrequencyData得很好。如果getFloatFrequencyData返回一个包含 1024 个值的数组,每个值代表一个频率仓/范围的音量。在采样率为 44.1 的 1024 个值的情况下,每个值将代表大约 20 赫兹频率范围的音量。

现在呢getFloatTimeDomainData?假设我有 2048 个值,每个值代表什么?

理解网络音频中的 getByteTimeDomainData 和 getByteFrequencyData 不同。或者至少,这个问题的答案没有回答我的。

audio-recording web-audio-api

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

如何在 android API 21 及更高版本中使用 synthesizeToFile

    spoken1 = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
        @Override
        public void onInit(int status) {
            if(status != TextToSpeech.ERROR){
                spoken1.setLanguage(Locale.US);
            }
        }
    })
    f1 = new File("test1.wav");
    abc = spoken1.synthesizeToFile("text",null, f1, "test12");
Run Code Online (Sandbox Code Playgroud)

大家好,我是android和java开发的新手。目前我正在为将 TTS 转换为音频文件的小应用程序工作。我还让应用程序说出我想要的。我坚持使用在 API 级别 21 及更高版本中已弃用的 SynthesizeToFile。“abc”变量的值总是“-1”。我也在谷歌上找到了一些帮助,但结果是 API 级别 21 及以上没有答案

有人知道如何使 synthesizeToFile 方法返回正值吗?并将音频文件也获取到媒体库?

编辑:我找到了原因,如何授予创建文件的权限是在 Android 版本之间更改,在我的本地 VM 上,它是 Android API 级别 24,它应该请求运行权限,并且清单中的更改权限对于 API 级别 24 来说不够。
另外如果 API 级别 22 及以下,代码运行良好。

android text-to-speech audio-recording media-player writetofile

5
推荐指数
0
解决办法
696
查看次数

MediaRecorder.AudioSource 中 VOICE_COMMUNICATION 和 MIC 的区别

我正在使用媒体录音机在 android 中使用VOICE_COMMUNICATION&MIC模式记录通话。

RECORD_SOURCE = MediaRecorder.AudioSource.VOICE_COMMUNICATION; //RECORD_SOURCE = MediaRecorder.AudioSource.MIC; iAudioRecorder = new AudioRecord(RECORD_SOURCE, NATIVE_SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, RECORD_BUF_UNIT);

我看到MIC录制的音频数据比VOICE_COMMUNICATION某些设备的增益大得多 (大约 2/3 倍)。此外,所捕获的背景音乐VOICE_COMMUNICATION也不如MIC.

为什么这两种录音模式的音频质量(如增益、响应能力)不同?

android audio-recording android-mediarecorder android-audiorecord

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

音频识别和比较

我正在做一个小组项目。我们正在开发一个程序,可以接收音频并将其与保存的音频文件进行比较,如果输入和保存的文件匹配,则输出音频消息。

我们想用某种 python 方法比较音频文件,但我们找不到任何方法来做到这一点。我们正在寻找某种类型的库,以便能够从每个文件中获取数据并查看它们是否相似。

不知道如何开始。如果有人可以帮助我们开始或为我们指明正确的方向,我认为我们可以从那里开始。

我们已经看了几十个教程,在网上搜索过,但仍然需要一些主要的帮助。有人可以向我们解释如何开始吗?

python audio audio-recording

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