试图通过WinAPI编写记录和播放声音的函数
我正在尝试在C中创建2个功能: 记录麦克风x秒的一个 一个获取录制的人,然后播放给用户 这是我写的: #include #include using namespace std; #pragma comment(lib, "winmm.lib") WAVEHDR StartRecord(int seconds) { const int NUMPTS = 44100 * seconds; int sampleRate = 44100; short int *waveIn = new short int[NUMPTS]; HWAVEIN hWaveIn; WAVEHDR WaveInHdr; MMRESULT result; WAVEFORMATEX pFormat; pFormat.wFormatTag = WAVE_FORMAT_PCM; pFormat.nChannels = 1; pFormat.nSample
10 2024-04-09
编程技术问答社区
音频处理和删除音频的某些部分
我是新手语音编码,现在我成功地将麦克风录制在文件中,并将每10秒保存在具有SaveRecordtoFile> SaveRecordtoFile函数的文件中(毫无问题地执行此操作) 现在,我想从录制的数据中删除2秒钟,以便我的输出为8秒而不是10,在randomTime array 0中,我想删除seconds Witch的数量... 在循环中,我在新的缓冲区if (randomTime[i] == '1') 中复制waveHeader->lpData的数据 看来这是一种真正的算法,应该有效,但问题是输出,一些输出很好(约70%或更多),但其中一些是损坏的 我认为我在代码中有一个错误,但是我有几天来调试此代码,但我不明白有什么问题? ,由于我的70%或更多的输出是好的,所以我认为这不是因为字节或样本 解决方案 您的代码可能会分开样本,之后流不同步,您会听到响亮的声音. 它是如何发生的?您的样本量是4个字节.因此,您绝不能复制任何不是4个倍数的内容.
44 2024-04-09
编程技术问答社区
在三星S7、S8和Gionee A1中,传入的语音没有得到记录
我正在使用此链接记录声音. 此方法可与所有设备一起使用,除非我在Samsung s7 上运行此代码, s8 和 gionee a1 另一侧的声音没有记录下来. 解决方案 请在下面使用此代码来实现它在所有设备上运行良好. import java.io.File; import java.io.IOException; import java.lang.Exception; import java.util.Date; import java.text.SimpleDateFormat; import android.os.IBinder; import android.app.Service; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.preference.Prefer
10 2024-03-19
编程技术问答社区
用AudioWorklet替换scriptProcessorNode
我正在努力从用户记录麦克风输入并处理麦克风输入.问题是我正在使用ScriptProcessOrdode处理数据,但是 // Connect analyser this.options.source.connect(this.analyser); // Create ScriptProcessorNode this.scriptProcessorNode = this.options.context.createScriptProcessor(this.options.bufferLen, numChannels, numChannels); // Connect scriptProcessorNode (Theretically, not required) this.scriptProcessorNode.connect(this.options.context.destination); // Create callback to update/analyze floatFreque
34 2024-03-19
编程技术问答社区
如何以编程方式将录制的音频文件保存在另一个文件夹中?
我正在尝试将录制的音频文件保存在我希望它为默认文件夹的文件夹中.但是我以某种方式没有这样做. 我的代码: Intent recordIntent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); Uri mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "/Record/sound_"+ String.valueOf(System.currentTimeMillis()) + ".amr")); recordIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri); startActivityForResult(recordIntent, RESULT_OK); 它确实调用了语音录音机应用程序.而且,当我按下停止按钮时,它返回我的应用程序,并出现
12 2024-03-19
编程技术问答社区
用OpenSL进行通话录音
我尝试在Galaxy S5中的Lolipop更新以来,尝试在我的应用中修复呼叫录制.作为基础,我正在此处使用Google样本项目:样本. 这是代码的主要部分: Audiorecorder :: Audiorecorder(SampleFormat *sampleFormat,SlengineItf Slengine):Freequeue_(NullPtr),recqueue_(nullptr),DevShadowqueue_(nullptr),callback_(nullptr)(nullptr) SLresult result; sampleInfo_ = *sampleFormat; SLAndroidDataFormat_PCM_EX format_pcm; ConvertToSLSampleFormat(&format_pcm, &sampleInfo_); gFp = fopen("/storage/emulated/0/file.pcm", "w"); //
12 2024-03-19
编程技术问答社区
通过网络录制音频的内网解决方案
什么是通过网页录制音频的最佳(最便宜,最开放的)方法.然后将录制作为mp3格式,并通过唯一的ID/URL提供. 我想最好的基于Flash的插件是最好的.我在想像Odeo这样的功能,但这是仅用于Interanet的用法.我不能依靠和公共网址或服务. 我正在寻找可以从现有组件(开源)项目中拼凑在一起的东西. 解决方案 您需要一个服务服务器端来录制音频,这可以托管在您的网络中的一台机器上(除非您通过本地为每台计算机进行空中进行操作). fms by Adob​​e提供了录制和播放流的选项. 但首先,您应该看看 red5 ,这是另一种免费服务: 他们的网站上有样本,您也可以在Google上找到一些样本.这是一个: 这是一个关于使用空气录制的快速教程: 其他解决方案 这是关于在Flash中使用麦克风的教程: 文档闪存麦克风对象: /action_scripts/actionscript_dictionary/actionscript_
4 2024-03-19
编程技术问答社区
在播放音频的同时,也播放音频访问输出播放数据的音频录音
我正在使用语音命令的自定义模型在我的应用程序中乱七八糟 - 我从AudioreCord中可以使用良好的录制和处理输入音频,我通过文本到语音向用户提供了反馈. . 我遇到的一个问题是,即使在播放音频时,我也希望通过我自己的文字进行演讲,或者通过在后台播放的其他内容(例如音乐)来工作.我意识到这将是一个无聊的问题,但是如果我可以以某种方式访问​​音频输出数据(手机正在播放的内容)并将其与我的麦克风输入数据匹配,我想我至少可以调整调整我的模型 +改善了我的结果. 但是,基于 Android-我可以从音频混音器中获取音频数据吗?,听起来好像是不可能的. 两个问题: 1)是否有任何方法可以通过Android API访问预期的音频输出/播放数据,或者Android API提供的任何选项用于处理此问题(音频输出和输入之间的反馈循环)? 2)除了停止所有其他播放或等待其他播放完成之外 - 还有其他方法可以解决此问题吗?我认为,如果用户在扬声器手机上,我只是错过了自己做的方
16 2024-03-19
编程技术问答社区
Ogg格式的语音记录?
我创建了一个语音录音机小程序.输出声音文件将为.wav格式.我想使用像.ogg这样的压缩文件格式.我有.ogg解码器小程序,它通过流播放音频文件.但是我需要一个.ogg编码器来以.ogg格式记录语音. 任何样本或研究都非常感谢! 解决方案 我使用了vorbis encoder:
18 2024-03-19
编程技术问答社区
在安卓系统中,是否可以在录制声音时将通话静音?
我想构建一个应用程序,我想在呼叫中调节声音.我写了一个代码,记录了声音和在不同的音调上播放它.现在我想要这个功能.记录声音,然后播放diff音高.如何使呼叫静音,但仍会记录音频. 解决方案 此答案在通话过程中可以使您的麦克风静音: Boolean isMuted = false; 然后在您的活动中,说onClick AudioManager audioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); if(!isMuted){ if((audioManager.getMode()== AudioManager.MODE_IN_CALL)||(audioManager.getMode()== AudioManager.MODE_IN_COMMUNICATION)){ audioManager.setMicrophoneMute(true);
18 2024-03-19
编程技术问答社区
如何比较两个音频数据?
我会记录自己的声音,并将它们保存为WAV文件,并将其保存在我的计算机中.稍后,我会发言,计算机应与我的语音命令与先前的/预录制的wav文件相匹配. 问题:如何检查两个音频数据相等,或者在两个音频之间匹配80%? if(audio1 == audio2) DO Task A else if( audio1 is a bit similar to audio 2) DO TASK B else if( audio1 (80% match) audio 2) DO TASK C end if 比较两个音频数据的最佳方法是什么? 解决方案 不幸的是,您不会很快就可以直接比较音频波形.关于语音和演讲者的认可有大量研究,如果您不熟悉基础知识,您将重新发明轮子.我认为您在这里有几种选择,具体取决于您真正想做的事情 开始阅读有关HMM,DTW(LearnVST提到的)和使用现有的语音API,例如 Microsoft One 处理,您可以在应用程序中构建
6 2024-03-19
编程技术问答社区
Linux管道音频文件到麦克风输入
我正在寻找一种将音频数据从文件馈送到麦克风中的方法输入,他们会从文件中接收音频数据. 这是我的方案:我编写了来自麦克风(使用ALSA)的音频数据的应用程序,并将其保存到文件中(AudioFile0.RAW).在将来的某个未知时间点,一些未知的第三方应用程序(如我所没有开发的那样,我没有开发控制,例如Chromium Web浏览器的"语音搜索"功能)将使用麦克风来获取音频数据.我希望第三方应用程序收集的音频数据来自AudioFile.RAW,而不是实际的麦克风本身. 我在想是否可以将默认音频输入设备更改为音频文件,或者可能是命名管道并执行cat audioFile0.raw > mypipe之类的操作(因为我不知道何时其他应用程序会尝试从麦克风).也许有一种更简单的方法? 我希望我能提供足够的细节和清晰度.请让我知道是否不清楚. 编辑: 因此,我想出了如何通过在我的主目录中创建以下.ASOUNDRC文件来制作虚拟麦克风: pcm.!virtmic {
10 2024-03-19
编程技术问答社区
如何在javascript中捕获音频?
我目前正在使用getUserMedia(),该>仅在Firefox和Chrome上工作,但它被弃用并仅在HTTPS上工作(在Chrome中).是否有其他/更好的方法可以在所有平台上使用JavaScript中的语音输入? 例如. Web.whatsapp.com诸如应用程序录制音频之类的网站如何? getUserMedia()提示首次使用者允许录制音频,而WhatsApp应用程序不需要用户的许可. getUserMedia()我目前正在使用这样的外观: navigator.getUserMedia( { "audio": { "mandatory": { "googEchoCancellation": "false", "googAutoGainControl": "false", "googNoiseSuppression":
20 2024-03-19
编程技术问答社区
如何用Asp.net使用Red5
我想在线录制语音,我想我需要使用FMS或RED5,并且我不知道如何将Red5与ASP.NET一起使用,实际上,这是我第一次尝试处理这样的事情,目前我是一个.NET开发人员. 所以有人向我展示一种处理它的方法,并向我展示如何将red5与asp.net一起使用. 预先感谢. 解决方案 这是一个不错的页面,具有很好的范围,Abou Red ands asp http://www.freelancer-job.com/blog/blog/2008/08/13/flash-aspnet-aspnet-aspnet-appnet-appnet-coder-to-to--coder-to-integrate-natight-基于 - integrate-integrate-integrate-red5- audiovideo-chat-module-to-hepnet-website-by-zukinet/ 是否有ASP带有语音录制示例代码的NET? 其他解决方案
10 2024-03-09
编程技术问答社区
是否有任何带有语音记录的ASP.NET示例代码?
我想知道是否有带有语音录音的ASP.NET的代码样本. 好吧,基本上,我想创建一个网页,允许用户单击记录按钮并通过他/她的麦克风记录他的语音,然后将其转换为mp3文件,然后我想单击"播放"按钮以播放什么记录. 我已经搜索了Google大量搜索,找不到任何代码这样做的代码. 我已经看到可以做到这一点的站点,并且它正在使用ROR(我认为)使用Flash. 有什么方法可以使用ASP.NET记录语音? 我不在乎它是否需要与ASP.NET相结合,只要可能. 谢谢. 编辑: Stephen M. Redd, 感谢您的投入.是的,我知道没有简单的方法可以完成我的要求.我还对这个问题进行了很多研究和Google.是的,我知道这样做的最佳方法是通过与FMS或RED5(开源)一起使用Flash. . 所以我试图弄清楚如何编写一个简单的闪存(.swf),然后我可以记录语音,然后将其保存到MP3格式中. 您知道还是可以提供我上面要问的任何方向? 1
12 2024-03-08
编程技术问答社区
如何在电子邮件中发送录制的语音?
我正在开发一个Android应用程序,其中我需要通过电子邮件发送语音. 我想要这样的流程, 记录语音并将邮件发送为附件中的音频文件. 而且我希望该声音不应在电话或SD卡中保留. 有可能吗? 解决方案 这是您需要的,它与我一起使用.... Uri uri = Uri.fromFile(new File(YOUR_DIR, YOUR_FILE_NAME))); Intent it = new Intent(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_SUBJECT, "TITLE"); it.putExtra(Intent.EXTRA_TEXT, "CONTENT"); it.putExtra(Intent.EXTRA_STREAM, uri); it.setType("audio/rfc822"); context.startActivity(Intent.cr
10 2024-02-15
编程技术问答社区
使用安卓系统是否可以进行自我呼叫
我正在开发一个需要具有IVR类型系统的Android应用程序.该人应该从申请中接到电话,并将提出一些问题,并且该人必须回答这些问题.这些答案应保存在某个地方.可以自我呼唤吗? 如果没有,是否可以同时玩游戏和记录.我将向用户发送一条长戒指通知,当他响应通知时,我想播放一个MP3文件,并记录用户在说什么.我怎样才能做到这一点? 解决方案 是一个自我呼唤吗? 不,对不起. 我想播放一个mp3文件,还记录用户在说什么.我该怎么做? 大概是MediaPlayer和MediaRecorder.或AudioTrack和AudioRecord.
12 2024-02-10
编程技术问答社区
如何在特定时间段和大小限制本地语音录音机?
我在意图的帮助下称呼本地语音录音机 Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); 及其捕获的声音,如我所期望的. 但是我无法自动停止以某些长度和尺寸约束. 我尝试了以下选项 // To Limit duration intent.putExtra("android.intent.extra.durationLimit", 10); intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10); // To Limit size intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024); 我正在使用kitkat上运行的三星选项卡4. 解决方案 使用EXTRA_MAX_BYTES在达到最大长度时停止重新编码.例如: Inte
56 2024-02-09
编程技术问答社区
试图在安卓系统中录制语音,但得到了错误信息
我试图在Android模拟器中录制语音(Android 4.1). 但是,当我按按钮开始录制时,它立即从功能返回并执行下一行,该行记录了一条消息,上面写着"记录". 然后,我按停止按钮,在LogCat消息中出现媒体记录器随着未经处理的事件而消失了. 如果我再次按下按钮开始录制,则会收到一条错误消息,说致命信号11.我不知道如何访问SD卡以查看文件是否是创建的. 以下是我从教程中使用的logcat代码: } public void start() throws IOException { String state = android.os.Environment.getExternalStorageState(); if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) { throw new IOException("SD Card is not mounte
14 2024-02-09
编程技术问答社区
如何识别用户在安卓系统中开始和停止说话? (安卓系统中的语音识别)
我做了很多研发,并经过了很多资源来解决我的问题,但我没有得到任何适当的解决方案. 我已经开发了一个应用程序,现在我想在其中添加基于语音的功能. 所需的功能是 1)当用户开始讲话时,它应该记录音频/视频和 2)当用户停止讲话时,它应该播放录制的音频/视频. 注意:此处的视频意味着在此期间,用户在应用程序中执行的任何用户执行.例如,单击按钮或某种动画等. 我不想使用 Google的语音识别器默认情况下在Android中可用,因为它需要互联网,但我的应用程序脱机运行.此外,我也知道 cmu-sphinx .但根据我的要求,这无济于事. 编辑: - 另外,我想补充一点,我已经使用start&stop按钮实现了这一目标,但我不想使用这些按钮. 如果有人有任何想法或任何建议,请告诉我. 解决方案 最简单,最常见的方法是计数零交叉数在音频中(即符号从正变为负变为负). 如果该值太高,则声音不太可能是语音.如果太低,那么再一次,不太可能是语音
8 2024-02-05
编程技术问答社区