我正在尝试构建一个具有阿拉伯语言识别功能的游戏,以便在Android设备上使用。我被困在语音识别工具上。哪一个更适合团结?我可以直接使用谷歌API吗?如果是,我可以控制数据吗?
或sphinx更适合Android设备上的游戏?我读过有关狮身人面像的文章,但阿拉伯语的声学模型不适用于此。
我曾尝试使用MATLAB制作它,但是使用MATLAB编码器在移动设备上构建它会花费我很多,而且它没有所有必需的库。
对此有何帮助?
答案 0 :(得分:0)
说到Speech和Android,谷歌平台是最好的方式。问题是它需要调用平台。我还没有尝试过离线版本:Offline Speech Recognition In Android (JellyBean) 至于谷歌平台,资产商店有20美元便宜的插件,价格为20美元。
主要问题是,它们不提供连续检测,您必须触发录制并停止发送。也许它适合你。 问题是,如果你有很多用户,每月只有1小时免费,你最终支付服务器使用费。我认为它大约是0.015美元/分钟。 另一方面,它有80多种工作语言,包括本地口音。
CMUSphynx是另一种解决方案。开源和离线功能使其成为一个不错的选择。我们不得不为Unity提出我们自己的Android插件,但是我们的结果很差,让我们放弃使用(在你问之前,不,我们不能提供插件,不幸的是......涉及NDA)。此外,语言有限。
还有像Nuance这样的其他解决方案,方式更好但也更昂贵(很可能超出了演示游戏的范围)。他们的API更先进,经常用于专业情况,如电话语音自动重定向。它也用在Vuzix设备上。
考虑到您会尝试使用Google语音,是的,您可以控制数据。基本上,您录制音频文件,将其发送到服务器,服务器使用包含成功概率的已识别单词列表的json对象进行回复。
你抓住第一个并解析内容。考虑到你想要一个移动动作,结果将是:
// This is the result from GSP
string str = "Move player one unit";
if(str.Length == 4)
{
// Parse
string action = str[0];
string actor = str[1];
string amountStr = str[2];
string unit = str[3];
// Convert
float amoutFl = ParseAmount(amountStr);
// Check
if(hashSetActor.Contains(actor) == false){ // error }
if(hashSetUnit.Contains(unit) == false){ // error }
if(actionDictionary.Contains(action))
{
// Act
actionDictionary[action](actor, amountFl,unit);
}
}
答案 1 :(得分:0)
pocketphinx的官方统一插件就在这里:
https://github.com/cmusphinx/pocketsphinx-unity-demo
阿拉伯模特必须经过培训,是的。最后你可以有一个好的系统,但你必须投入足够的资金。