草庐IT

android - 在 Android 中检测声音或语音的开头

coder 2023-12-10 原文

我想听麦克风(我猜是使用 AudioRecord)并在一个人开始说话的那一刻执行一些操作。我知道我可以使用 AudioRecord 缓冲音频,但我该如何分析它?

最佳答案

嗯,困难的部分是让手机识别它的声音。您可以将语音识别系统设置为输入,而不是麦克风,后者可能可以做到这一点。不过我不这么认为,因为(我昨天确实读到了所有相关内容)电话实际上并没有进行识别,它只是打开了一个实时流(比如电话)到Google 服务器,由他们进行识别。

此外,目前我所找到的信息表明 Android 不支持分析来自麦克风的实时音频。所有这些看似“实时”的其他应用程序实际上只是采集了一堆小样本并非常快速地分析它们,以便它们看起来是实时的。每 300 毫秒采样 500 毫秒似乎很常见。

幸运的是,除了我的编程工作,我还是一名声音技术员,所以我可以告诉你(如果你愿意投入工作)有一种方法可以检测实际声音,而不是仅仅声音。每个声音都被分成几个不同的频率比率,这些频率比率全部组合在一起形成我们听到的声音,每个声音的比率保持相当恒定,而每个单独的声音的比率是不同的(这就是基于语音的密码起作用的原因)。因此,如果您能够采集样本,将其分解为每个频率约为 10 赫兹的频率,并观察每个频率的振幅,当您得到一个看起来类似于语音的频率/振幅模式而不仅仅是“白噪声”时“,你会做生意的。 然而,这似乎并不容易。以前用名为 SpectralView 的应用程序做过类似的事情,它显示了全部分解的音频频谱。

此外,正如您通过使用语音搜索所看到的,语音的音量也会有很大的波动。你可以找那个,但它不会那么可靠。

总而言之,您如何分析它?好吧,你必须在看起来像声音的频率中寻找一种模式。你是怎么做到的?好吧,老实说,我不确定。对不起。

关于android - 在 Android 中检测声音或语音的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659726/

有关android - 在 Android 中检测声音或语音的开头的更多相关文章

  1. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby - 在 Ruby 的 if 语句中检查 bash 命令 - 2

    如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最

  4. ruby - 确定字符串的结尾是否与单独的字符串的开头重叠 - 2

    我想查找字符串的结尾是否与单独字符串的开头重叠。例如,如果我有这两个字符串:string_1='Peoplesaynothingisimpossible,butI'string_2='butIdonothingeveryday.'如何找到string_1末尾的“butI”部分与string_2开头相同?我可以编写一个方法来遍历这两个字符串,但我希望得到一个包含我错过的Ruby字符串方法或Ruby习惯用法的答案。 最佳答案 将MARKER设置为一些从未出现在您的string_1和string_2中的字符串。有一些方法可以动态地做到这一

  5. ruby - Sinatra 不以 twitter gem 开头 - 2

    当我尝试启动sinatra时,出现以下错误/var/lib/gems/1.9.1/gems/sinatra-1.4.4/lib/sinatra/base.rb:1488:instart_server':undefinedmethodrun'forHTTP:模块(NoMethodError)require'sinatra/base'require_relative"twt.rb"classSinatraApp在“twt.rb”中我需要Twitter(5.7.1)require'twitter'classTwitattr_accessor:clientdefinitialize(consu

  6. ruby - 在 Ruby + Chef 中检查现有目录失败 - 2

    这是我在ChefRecipe中的一blockRuby:#ifdatadirdoesn'texist,moveoverthedefaultoneif!File.exist?("/vol/postgres/data")execute"mv/var/lib/postgresql/9.1/main/vol/postgres/data"end结果是:Executingmv/var/lib/postgresql/9.1/main/vol/postgres/datamv:inter-devicemovefailed:`/var/lib/postgresql/9.1/main'to`/vol/post

  7. ruby - 使用正则表达式检查字符串是否以辅音开头 - 2

    有没有更好的方法在Ruby中编写以下正则表达式?第一个正则表达式匹配以(小写)辅音开头的字符串,第二个以元音字母开头。我正在尝试找出是否有一种方法可以编写与第二个表达式的否定匹配的正则表达式,而不是编写具有多个范围的第一个表达式。string=~/\A[b-df-hj-np-tv-z]/string=~/\A[aeiou]/ 最佳答案 声明$string=~/\A[^aeiou]/将测试字符串是否以非元音字符开头,其中包括数字、标点符号、空格和控制字符。如果您事先知道字符串以字母开头,那很好,但是要检查它是否以辅音开头,您可以使用前

  8. ruby-on-rails - 从 Rails 上的 base64 编码图像中检索文件名和内容类型 - 2

    我正在尝试检索以base64编码格式接收的图像的内容类型和文件名。这是使用base64编码图像执行POST请求的代码require'net/http'require"rubygems"require'active_support'url=URI.parse('http://localhost:3000/')image=ActiveSupport::Base64.encode64(open("public/images/rails.png").to_a.join)post_params={'image'=>image}Net::HTTP.post_form(url,post_params

  9. ruby - Ruby 中的 OptionParse 和不以 '-' 开头的参数 - 2

    我想要这样的参数:programdothis--additional--options和:programdothat--with_this_option=value我不知道该怎么做。我唯一能做的就是在开头使用带有--的参数。有什么想法吗? 最佳答案 要使用OptionParser处理位置参数,首先使用OptionParser解析开关,然后从ARGV中获取剩余的位置参数:#optparse-positional-arguments.rbrequire'optparse'options={}OptionParser.newdo|opts

  10. ruby - 一个方法定义以括号开头,看不懂它的用处 - 2

    在Ruby中,我看到这样一个方法的定义:def[](param)#dostuffend这个方法声明是什么意思?它是如何工作的?什么时候使用它?以及如何使用实例对象调用此类方法? 最佳答案 这是方法的名称,[]。您可能已经知道Array#[]或Hash#[]。在您的类(class)中,您也可以定义这样的方法。它会做什么-由您决定。classFoodef[](param)#bodyendendf=Foo.newf[:some_value] 关于ruby-一个方法定义以括号开头,看不懂它的用处

随机推荐