Chat with Milvus #9_哔哩哔哩 (゜-゜)つロ 干杯~-bilibiliwww.bilibili.com
User:
因为我现在有一个模型,在做一个(声纹识别)项目,然后就是想比如说有很多条语料是几十万条,然后想过我这个模型之后就生成了几十万个特征向量,然后对应的比如说有个 ID 或者身份证号或者手机号码什么的,然后垂下来,然后使用的时候,当再来一条的时候,我就想用咱们 Milvus 能够搜出 Top k 的最相似的特征向量,然后争取能够找到这个人,我觉得 Milvus 应该完全能够做到这个。
顾老师 @ Milvus:
所以你单纯只是想通过声音来识别这个人,还是说你先是会把声音的内容相当于来一个这种 STT 就是 speech to text ,先把它变成了文字,然后在文字的语义上去做这些。
User:
不是语音识别。语音识别和声纹识别还是很不一样的。语音识别就是把声音转换成文字,我是做声纹识别,就只需要确认身份,他俩的关注点不太一样。
顾老师 @ Milvus:
明白了,这个的话相对来说对 Milvus 这种的话,它还是比较容易去实现的部分,因为我不知道你的声纹识别的模型是基于一些什么?是在一些比较成熟的模型上面去做了一些 fine tuning,还是说是你从头开始训练的模型?
User:
不是从头了,这从头太难了。我用的是关于语音方面的一个叫 xvector 模型。
其实现在我在用 Redis 用来存向量 key value,但是它没有很大规模量级的相似向量搜索的功能。如果我遍历一遍的话,会非常的麻烦,然后我之前研究 Faiss,发现它也就是不太方便使用,它也算是一个算法库,不太方便使用,然后后来发现 Milvus,我就觉得好像会很方便用。
顾老师 @ Milvus:
是的,因为其实我们底层的索引的算法当中,有集成 Faiss 的算法,当然就是说确实算法到向量搜索引擎上面的话,其实向量搜索引擎可以理解为是算法加上了数据管理的一套东西在一起,所以它确实会比单纯算法,容易用一点,但是他可能会有一些权衡的东西在,所以我不知道你的量级会是什么样子的,你大概会有多少?
User:
四五十万?
顾老师 @ Milvus:
那应该还是在一个单机,但你的并发的查询的需求大概会是什么样子的?
User:
并发的查询的需求...目前没有很多, 我们因为这是给固定客户用的,因为也是属于没有那么多的节点,估计现在初期的话是50个节点以内,没有很多变化。
顾老师 @ Milvus:
好,明白了,所以这样的话其实对硬件资源的要求应该还不大。
User:
并不高。
顾老师 @ Milvus:
其实我们之前也在想说像这些,包括现在有用人脸去做身份识别、这种声音去做身份识别,其实我们之前就在想这种场景应该是会有用不需要这种多模型的数据来做交叉的身份认证时间的。单纯只是人脸的话可能并不足够,但是如果你加上了声音,然后再加上一些其他的东西的话,他其实精度肯定是会更高。而且对于成本来讲也不会增加太多。
User:
对的我们现在也在做关于人脸识别加声纹识别结合起来的一种验证。
顾老师 @ Milvus:
其实我之前是想应该在一些银行金融场景会比较比较友好,因为单纯如果现在让我去用人脸支付的话,我觉得还是不是特别的牢靠,因为单纯人脸感觉不是特别的可靠,但是如果加上声纹的话,我觉得就会放心一点,至少他有两个维度。
User:
理论上是这样的,肯定是越多的验证手段越安全。
顾老师 @ Milvus:
所以那你的声纹的这些,你的底下的题库,你会经常的去更新吗?会不会有更多新的数据去追加进去嘛?
User:
肯定会有追加,但是不会大量级的,可能会一天增加几十条的这种。
顾老师 @ Milvus:
明白,所以就类似于相当于说,比如说企业,可能就是这么固定的一些员工,但是他每一天可能会有一些人离开有一些人新加的。不会特别多这样子。
User:
对。但是最终都要留下来,而且时间长了的话也是需要更新的,关于同一个人的声音,不过不会那么频繁的更新,最重要的还是查询能够在一个库里面去看,查询到最相似的 topk 的那些人的名字就这样。
顾老师 @ Milvus:
这个还是比较容易的,但是你刚才说的这个人的声音可能会需要更新,是指是因为你的模型迭代了之后,造成的这些向量不一样所以要更新,还是说其实我这个人比如说我过了5年之后,我的声纹可能和现在的声纹就已经是也会不一样。
User:
第2种,就是过了实际岁月的时间的变化,或者是你当时录音的时候的心情,或者是感冒什么的,都会有影响的。随着时间的变化,它的声纹也是会发生变化的。
顾老师 @ Milvus:
所以其实对于一个人的话,需要采集多少种声纹才能够去比较好的辨别它呢?还是说目前只是说一个人就是一个手段这样?
User:
现在就一个声纹。
顾老师 @ Milvus:
不是一般都是会让你读一段话,然后提取你的声纹?所以这一段话读下来,其实他最后只提取了一个声纹是吗?
User:
对的。其实跟自己的应用场景也有关系,如果你读一段话的话,你可以选择其中的几秒钟,或者是把这一段话截成几段,或者取个平均,或者把整个算作一个语音或者是分成几段,然后取得平均,这都是根据自己的场景去考虑吧。因为有的时候短语音和长语音,它占的比例也不太一样,像咱俩现在这样对话的话,可能一个人说5-6秒、10秒钟,然后有的时候答对话的话,像是:“你明白了吗”,“你知道了吗”, “知道” 就特别短的话也是也是有一定的影响的。
顾老师 @ Milvus:
这样子的。所以像一般的这种,比如说我只是想要认证一个身份的话,我可能要求用户讲关键词或者说句子应该是比较短的。
User:
对,就像现在的生活微信登录,不就是声纹登录的话,就是读一份固定的数字吗?而且那个数字还一直都不会变,一直是那几个数字。这个就是比较容易的声纹验证,准确率会比较高,但有的时候是要文本无关的,你就随便说一句话就能知道,不管你说什么都能知道是你。
顾老师 @ Milvus:
是明白了,所以就是说如果只是单纯为了做身份验证的话,可能每次都要求用户读固定的文字就可以了,这样的话比较容易做,也准确度比较高一点。但是在一种更开放的场景里面,可能就是说他讲的东西可能就是不可控,你可能从一个不可控的这种思路当中去提取他的声纹这样子。
User:
对。使用场景不太一样。希望我能用起来 Milvus,我刚刚了解还没有开始安装使用。
顾老师 @ Milvus:
你应该已经在我们的用户群里面了?
User:
对,已经在群里了。
顾老师 @ Milvus:
你有任何问题的话都可以在群里面问的。我相信你这个问题,你这个场景应该是能够帮助到你的。
下星期二晚上8点-9点,欢迎你也来找我们聊聊!
参加方式:
点击链接直接加入会议:
https://meeting.tencent.com/s/5uswub0c2dee
手机一键拨号入会
+8675536550000,962264796# (中国大陆)
+85230018898,,,2,962264796# (中国香港)
http://github.com/milvus-io/milvus | 源码
http://milvus.io | 官网
http://milvusio.slack.com | Slack 社区
http://zhihu.com/org/zilliz-11| 知乎
http://zilliz.blog.csdn.net | CSDN 博客