技术背景
目前的语音识别技术相当强大国内的语音平台,百度科大讯飞也都有自己的开放平台,开发者可以很方便的集成到自己的开发环境。
具体需求
通过语音命令手机打电话给联系人,由于一些原因,比如:语音输入不准,语音识别偏差,读音与联系人类似等等,识别出来的联系人名字需要通过算法分析提取出通讯录中可能的联系人,并返回给用户选择确认。
分析步骤
1.将中文名转换为拼音
CFStringTransform 转换函数, 可以带音标,可以不带
2.转换容易混淆的字符
中文读音中的一些容易混淆的读法,比如:"s"-"sh"
,"c"-"ch","z"-"zh","f"-"h","l"-"n","ang"-"an"等等,把它们换成统一的字符
3.全匹配和模糊匹配
全匹配:遍历通讯录找到与搜索拼音相同的联系人并添加到返回列表
模糊匹配:根据自己的需求来分析判断联系人与搜索的拼音是否为同一个,我的做法是如果两个字符串中有5个连续的字符相同,则将联系人添加到返回列表
4.由于当搜索字符太短时,搜索结果太多,所以我把字符串长度比搜索字符长度多5以上的联系人排除掉
5.当有全匹配的结果是优先返回全匹配的结果
结束