我正在尝试实现一个可以读取不同语言文本的应用程序。令人惊讶的是,当我使用 isLanguageAvailable(Locale loc) 方法时,它会为 Google TTS 列表中尚未下载的语言返回 true。它们甚至在我调用 speak() 方法时播放。我得出的结论是,发生这种情况是因为它们是在线声音。
文档表明,您可以通过对语音对象使用 getFeatures() 方法来了解语音是否在线。但是,Voice 类是为 API >= 21 实现的。对于 API <>getFeatures(Locale loc) 方法以及 TextToSpeech 类,它应该返回一个具有不同特征描述的字符串数组。我已经在不同的引擎和语言环境上尝试了最后一种方法,我通常得到一个空数组。大概,这是TTS开发者可以填写或不填写的额外信息...
那么,我怎么知道 tts-locale 是否是 API < 21="">
最佳答案
Google Text to Speech 引擎的独特之处在于,如果用户没有安装额外的“离线”下载,它可以使用网络合成语音。
通常要请求这个,你会包括:
put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, String.valueOf(shouldNetwork()));
他们的网络合成语音曾经具有明显更高的质量,但最近随着他们的改进,这一点不那么明显了。
Text to Speech 引擎提供的 API < 21="" 的信息毫无希望且普遍错误,正如您从调用="">isLanguageAvailable(Locale loc) 中注意到的那样,大多数引擎的报告都是错误的。新的 API 试图解决这个问题,因此您将努力通过 API < 21="">my answer on this question关于如何查询元素。
在撰写本文时,即使使用了新的 API,引擎也会提供不正确的信息。
以 IVONA 为例,当查询 getVoices() 返回类似于:
Voice[Name: en-US, locale: en_US, quality: 300, latency: 300, requiresNetwork: false, features: [embeddedTts]]
但是它省略了:
Voice[Name: en-US, locale: en_US, quality: 300, latency: 300, requiresNetwork: false, features: [embeddedTts, **notInstalled**]]
因此,您的代码将假定此引擎可以正常工作,但它不会......这非常令人沮丧,还有我向他们提交的未答复错误报告。
综上所述,您目前可能不得不在第一次尝试与引擎对话时退回到简单的通知,单击该通知会导致您的应用出现常见问题解答 - 在常见问题解答中,您将解释如果引擎不说话,请检查安装和下载......
令人沮丧的是,我无法为您发布一切正常的简单代码 fragment 。
关于android - 文字转语音 : check if it is on-line or off-line for API < 21,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663691/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我有一大串格式化数据(例如JSON),我想使用Psychinruby同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
对于作为String#tr参数的单引号字符串文字中反斜杠的转义状态,我觉得有些神秘。你能解释一下下面三个例子之间的对比吗?我特别不明白第二个。为了避免复杂化,我在这里使用了'd',在双引号中转义时不会改变含义("\d"="d")。'\\'.tr('\\','x')#=>"x"'\\'.tr('\\d','x')#=>"\\"'\\'.tr('\\\d','x')#=>"x" 最佳答案 在tr中转义tr的第一个参数非常类似于正则表达式中的括号字符分组。您可以在表达式的开头使用^来否定匹配(替换任何不匹配的内容)并使用例如a-f来匹配一
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我在一个我想在formtasticGem中覆盖的方法中找到了这个。该方法如下所示:defto_htmlinput_wrappingdohidden_field_html是什么意思?在第三行做什么?我知道它对数组有什么作用,但在这里我不知道。 最佳答案 你可以这样读:hidden_field_htmllabel_with_nested_checkbox是连接到hidden_field_html末尾的参数-为了“清晰”,他们将其分成两行 关于ruby-on-rails-没有参数的`
考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://
原始问题Letd(n)bedefinedasthesumofproperdivisorsofn(numberslessthannwhichdivideevenlyinton).Ifd(a)=bandd(b)=a,whereab,thenaandbareanamicablepairandeachofaandbarecalledamicablenumbers.Forexample,theproperdivisorsof220are1,2,4,5,10,11,20,22,44,55and110;therefored(220)=284.Theproperdivisorsof284are1,2,
这段代码似乎创建了一个范围从a到z的数组,但我不明白*的作用。有人可以解释一下吗?[*"a".."z"] 最佳答案 它叫做splatoperator.SplattinganLvalueAmaximumofonelvaluemaybesplattedinwhichcaseitisassignedanArrayconsistingoftheremainingrvaluesthatlackcorrespondinglvalues.Iftherightmostlvalueissplattedthenitconsumesallrvaluesw
我正在使用准备一个巨大的字符串循环中的运算符。最后我想删除最后2个字符。some_loopstr我认为上面的最后一个操作也会消耗内存和时间,但我不确定。就是想看看有没有和效果相反的操作所以我可以从同一个字符串中删除最后两个字符。 最佳答案 事实上,字符串切片已经是一种快速且内存高效的操作,因为只有在真正需要时才会复制字符串内容。请参阅“Seeingdouble:howRubysharesstringvalues”中的详细说明。请注意,这是对字符串操作的某种经典优化;Youhaveitinjavatoo我们经常在C中使用类似的技巧。所