我需要进行语音活动检测作为对音频文件进行分类的步骤. 基本上,我需要肯定地知道给定音频是否使用语言. 我正在使用py-webrtcvad,我在git-hub中找到,几乎没有记录: https://github.com/wiseman/wiseman/py-webrtcvad 的事情是,当我在自己的音频文件上尝试它时,它可以与具有语音的音频文件一起使用,但是当我用其他类型的音频(例如音乐或鸟类声音)喂食时,它会产生误报.将侵略性设置为3. 音频是8000个样本/Hz 我更改为源代码的唯一一件事就是将参数传递给主函数的方式(不包括SYS.Args). def main(file, agresividad): audio, sample_rate = read_wave(file) vad = webrtcvad.Vad(int(agresividad)) frames = frame_generator(30, audio, s
以下是关于 speech-recognition 的编程技术问答
我正在使用webrtcvad和pydub使用音频文件.任何碎片的分裂都是通过寂静的句子. 有什么办法可以在单词级边界条件下进行拆分? (每个口语之后)? 如果libsa/ffmpeg/pydub具有这样的功能,那么每个人声都可以分开吗?但是分开后,我需要声音的开始和结束时间,正是该声乐部分在原始文件中所定位的. 一个简单的解决方案或通过FFMPEG分裂的方法是由以下方式定义的: ,但这也通过静音分裂,每个填充号或框架大小,分裂是不同的.我正在尝试通过声乐分开. 例如,我手动完成了原始文件,拆分单词及其在JSON中的时间位置在链接下提供的文件夹中: 解决方案 在将音频预处理成合适的功能之后,可以使用隐藏的Markov模型来处理简单的音频分割问题.语音的典型特征将是声音,声乐活动/声音.为了获得单词级分段(而不是句子),这需要具有相当高的时间分辨率.不幸的是,Pywebrtcvad没有可调节的时间平滑,因此可能不适合该任务. 在您的音频示例中,有一个广播主机在德语中很快说
我正在创建一个使用两种类型的音频输入的站点... getusermedia和webkitspeechRegnition.这两个功能都可以正常工作,但是Chrome弹出了两次访问安全弹出弹出窗口 - 这很有意义.有人知道如何获得一个访问权限处理两个功能吗? 欢呼! navigator.getUserMedia({audio:true}, gotStream, function(e) { alert('Error getting audio'); console.log(e); }); 和... var recognition = new webkitSpeechRecognition(); 解决方案 避免多次要求权限的唯一方法是确保您的网页使用HTTPS URL.然后,Chrome会记住您的权限,而不会再次显示弹出窗口. 其他解决方案 在Chrome 36上(可能是早期的),我只有一个弹出栏.
我一直在原型分类使用WebKitsPeechRevention.我很快了解到,您不能从文件加载它们,必须从Web服务器提供它们.我正在使用OSX,因此我只是将文件移至已经运行和启用的本地Apache.这很好一段时间了. 出于某种原因,我的任何页面都没有效果会促使我拒绝/允许麦克风使用.我什至从另一个Web服务器复制了一个现有的工作页面,如果我从 http://localhost/speech.html 它不会提示.它跳过了提示,然后转到我的识别. However, if I load the same page (or any of my other prototypes) from http://127.0.0.1/speech.html 效果很好.这使我认为我意外地缓存了"总是拒绝"之类的回应.我认为我清除/重置了所有的镀铬设置,但我仍然得到相同的行为. 127.0.0.1将正确提示,但Localhost根本不会提示. Chrome可以在哪里存储一些我需要清除的其他设置
我想知道 如何 是否存在镀铬内置的语音识别,还是在操作系统中访问基础语音识别设施? 解决方案 是的,Chrome通过Google的服务器进行语音识别.但是,没有理由其他浏览器无法选择以不同的方式实现它(例如,在操作系统中使用某些语音识别设施). balu,您的链接实际上有点过时.最新的Google提案可以在这里找到: http:http://www.w3 .org/2005/uncubator/htmlspeech/2010/10/google-api-draft.html 尽管在Chrome Dev Channel中已经有一段时间在Chrome Dev Channel中获得了语音识别,但它 尚未发货,我们尚不确定它何时会发货.我们绝对希望人们使用API并提供反馈,但我们认为这还没有准备好黄金时段. 其他解决方案 根据代码,将音频数据作为发布请求发送到:
我正在制作一个适合Android Wear的应用程序, 我想在Google的" OK Google"选项中实现命令. 我看到了此页: /p> ,但它仅与包括Android Wear中的活动的应用有关. 我想问: 我可以添加自定义命令吗?我的意思是,那些不以"开始"一词开始的人? 我可以添加命令可以做另一件事,而不仅仅是打开应用程序吗?喜欢运行方法? 如果不是问这个问题的地方,您能给我一个电子邮件/链接Google开发人员的帮助/支持吗?谢谢. 解决方案 对于在Android磨损设备上运行的应用程序: 否,固定了系统提供的语音操作列表(并列出在这里).您可以将应用程序设置为能够响应它们(例如, to note ),但是您不能添加新的. 是的.当您的应用程序中已经进入时,您可以使用startActivityForResult()使用ACTION_RECOGNIZE_SPEECH获取语音输入.然后,您可以使用返回的字符串执行您想要的任何内容. 与此同
我的项目是使用麦克风进行扬声器识别. 我正在使用speeh_rcognition库来提取我的麦克风音频,但是对象的类是'specy_recognition.audiodata',我不知道如何将其转换为wav文件(例如,为了使用libresa,获得音频功能,也许可以识别扬声器). 有人可以帮我吗?我已经学习Python已经有很多时间了,所以使用麦克风可以更简单的方法来识别扬声器:) 非常感谢! 解决方案 将音频写入WAV文件: with open("microphone-results.wav", "wb") as f: f.write(audio.get_wav_data()) 引用 返回一个代表WAV文件内容的字节字符串 包含由Audiodata实例表示的音频.
我正在开发一个应用程序,我需要某种方法来比较2个声音,无论是否匹配,我知道语音识别器是一种做到这一点的方法首先,除了语音识别器支持的范围外,它不适合其他语言....有什么想法吗?就像过去的手机一样 解决方案 a 相对简单的方法是使用FFT(快速傅立叶变换)将原始WAV文件的时间域数据转换为频域数据(每个数据都转换的阵列中的值表示特定频带的相对大小/强度). 如果同一个人两次说相同的单词,则在两个WAV文件中,由此产生的时间域数据仍将非常不同.将两个WAV文件转换为频域(使用两者的FFT窗口的大小相同,即使两个文件的长度略有不同)也会产生频率数组,而频率数组与彼此的相似性要比原始的WAV文件更相似./p> 不幸的是,我找不到专门针对Android的FFT库.这是一个引用一些基于Java的库的问题: java中的信号处理库? 其他解决方案 一个想法正在比较声音在其光谱中的相似性.频谱图中的特征是强大的,并且可以抵抗噪声,这是分析两个声音的良好参考. 如果采用这种方法
我想要Android语音识别系统分析音频文件,而不是麦克风的默认传入声音. 有什么方法可以做到吗? 谢谢. 解决方案 cmusphinx.sourceforge.net/wiki/tutorialandroid刚刚发现链接听起来像是某人创建了Android版本的sphinx. 查看这样做的Android API似乎并不支持. (软件包summary.html ) 您可能可以使用另一个API. 我知道Microsoft的C#API允许使用此功能,但是为了使其有用,您可能需要使用您编写的程序来设置服务器,然后在手机上记录声音文件,然后将其发送到服务器. cmusphinx(StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration); recognizer.startRecognition(new File("speech.wav").toURI().to
我试图将Android语音识别服务收听的音频数据保存在文件中. 实际上我实现了RecognitionListener,如下所示: on android上的文字 如下所示,将数据保存到缓冲区中: 捕获发送给Google语音识别服务器的音频 ,将缓冲区写入WAV文件,如这里. android record awnroid record raw to raw to raw to raw to raw to raw to Wave File in Wave File for HTTP Streaming 我的问题是如何获得适当的音频设置以保存在WAV文件的标题中. 实际上,当我播放WAV文件时,只有此参数听到奇怪的噪音, short nChannels=2;// audio channels int sRate=44100; // Sample rate short bSamples = 16;// byteSample 或没有这样的: short
我读了 w3c docs 关于此,我认为自定义单词来自自定义语法,但是我尝试转到此演示,在控制台中输入以下JavaScript: recognition.grammars.addFromString('foo'); 哪个运行正常,recognition.grammars[0].src返回:"data:application/xml,foo" 注意:'foo'不是我感兴趣的单词,但是我感兴趣的单词不是英语单词,在此示例中使用'foo'.当我正常讲自己的自定义单词时,它认为我在说其他话(这很有意义).我在这里使用" foo"来保护我的品牌:) 所以我想要的是能够说"嘿,foo",类似于"好的,google"的工作方式.但是我的" foo"单词不是一个实际的单词,所以SpeechRecognitionResult没有我的自定义单词. 我是误解了如何添加自定义单词,还是今天不可能? 解决方案 当我通常会说我的自定义单词时,它认为我在说其他话(这很有意义).
我目前正在使用使用语音识别来控制统一对象的Vuforia进行增强现实项目.我只是在寻找示例工作代码. 解决方案 统一还没有内置.他们一直在做研究很长时间很快就会添加到团结中.您可以从资产商店获取工作语音到文本(免费) .它是开源的,您可以帮助如果您遇到任何问题,请对此做出贡献. 作为旁注,几乎每个操作系统都有语音识别API.您可以通过将所有这些API包装到C#中的Sing类中轻松制作插件/a>确定您的游戏正在运行的操作系统,请致电哪个. android : speeckRecognizer class. class. 请参阅此项目 ios : sfspeechRecognizer class macos : nsspeechRecognizer class Windows : 在a> class 请参阅此项目 https://github.com/lightbuzz/lightbuzz/speech-recognition
我尝试使用Error using fread Invalid file identifier. Use fopen to generate a valid file identifier. Error in htkread (line 7) nframes = fread(fid, 1, 'int32'); % number of frames Error in mapAdapt>load_data (line 107) data{ix} = htkread(filenames{ix}); Error in mapAdapt (line 52) dataList = load_data(dataList); Error in demo_gmm_ubm (line 69) gmm_models{spk} = mapAdapt(spk_files, ubm, map_tau, config); 代码的一部分导致错误如下: function data = load_data(dat
我为扬声器识别目的构建了一个GMM-UBM模型.适用于每个说话者的模型的输出,通过对数似然比计算得出的一些分数.现在,我想将这些似然得分转换为0到100之间的同等数字.有人可以指导我吗? 解决方案 没有直接的公式.您可以做简单的事情,例如 prob = exp(logratio_score) ,但这些可能无法反映您数据的真实分布.您的样品的计算概率百分比不会均匀分布. 理想情况下,您需要获取一个大数据集并收集有关您对分数的接受/拒绝率的统计信息.然后,一旦构建直方图,您就可以通过该频谱图将得分差异标准化,以确保如果您看到一定的分数差异,则可以接受30%的主题.该归一化将使您能够创建均匀分布的概率百分比.请参阅例如如何如何在存在零细胞的情况下,计算2x2表的似然比的置信区间 这个问题在扬声器识别系统中很少解决,因为置信区间不是您真正想要显示的.您需要一个简单的接受/拒绝决定,为此,您需要知道虚假拒绝和接受费率的数量.因此,仅找到一个阈值,而不是建立整个分布是足
我正在编写一个应用程序,该应用程序的行为将与现有的语音识别类似,但会将声音数据发送到专有的Web服务以执行语音识别部分.我使用的是标准的Mediarecord(已编码AMR-NB),这似乎是语音识别的完美选择.此提供的唯一数据是通过 getMaxAmplitude() methot. 我正在尝试检测该人何时开始说话,以便当该人停止说话大约2秒钟时,我可以继续将声音数据发送到Web服务.现在,我正在使用一个阈值来振幅,如果它越过值(即1500),那么我认为该人在说话.我担心的是,振幅水平可能因设备而有所不同(即Nexus One V droid),因此我正在寻找一种可以从振幅值得出的更标准的方法. . P.S. 我看了看 graphing-agplitude ,但它并没有提供仅使用幅度进行操作的方法. 解决方案 好吧,这可能没有太大帮助,但是从应用程序通过测量设备麦克风捕获的偏移噪声开始,并基于此动态应用阈值?这样,您将使其适应不同设备的麦克风,也可以适应用户在给定时间使
如果我们在Chrome上的网站上以下面的网站上的HTML5的Web Speech API的JavaScript代码运行,Chrome将要求使用用户使用用户的计算机的麦克风的许可. var recognition = new webkitSpeechRecognition(); recognition.start(); 但是,如果我在Chrome Extension的页面上运行上面的代码,Chrome不会要求用户允许. Chrome扩展如何获得用户使用用户计算机的麦克风的权限? 谢谢. 解决方案 我认为您必须自己实施.在Chrome Extension的清单中,有一个权限参数.我认为首先,您必须获得该文件中使用麦克风的权限.我不知道该参数是什么,但是您可以在文档中检查一下. 仅在用户安装扩展名时显示此权限警告.之后,扩展可以在意志下打开/关闭麦克风.要寻求用户的许可,请首先检查网站用户正在使用的以及是否要激活麦克风.之后,只需在该网页中注入html/css代码