基于C55xx C674x 和 PCM1864 语音识别 前端语音处理解决方案(2)
Loading the player...
将在30s后自动为您播放下一课程
呃,设计这个系统呢 就是说,你一个拷贝呢, 它因为麦克风阵列的话它其实,呃, 形式也很重要! 呃,是环形呢,还是说线性。 因为,你如果 你这个设备是挂在墙上的, 像电视机之类的, 空调是挂在墙上的, 你对着它,永远是一个...它 只是180度,不是一个环形的。 只有180度。所以说像 这种情况下通常是做一个线性的, 呃,麦克风阵列会好一些。 因为你做beamforming时 按一个方向去做那个能量汇聚 会好一些。 而你做一个, 如果是摆在桌子上的呢, 你有可能会从各个方向去跟它说话, 呃,那就是说做一个环阵。 比如说几加一, 6+1呀,这样呢,会好一些。 呃,就是要多少个麦克风, 这个阵列里边要多少个麦克风。 那其实呢,比如说你是环阵的话, 或者说是环阵的话,那取决于你希 望做几个方向的这个beamforming, 你希望把这个角度分得多细。 因为说白了, 那个环阵它其实就是, 比如说6+1或者7+1, 它就是中间一个呢 加上一条线上的那就是 这头是三个, 三个麦克风是在一个线上, 它以这样来区分方向。 它都识音, 它就是说,从不同的角度去找 这个是哪一个方向来的声音。 而在这个方向 之外的,它是做一个预测, 它把这个, 在这个方向做一个增强, 是这样来,呃, 就是说找到你的最佳的音。 其实它就是最终做 下来,呃,从一个系统层来说呢, 它会知道你这个说话是 在麦克风阵列的哪一个方向, 而不是说仅简单地去里面 随便选一个麦克风的声音。 哪怕你希望多远, 那它就越远的话, 它麦克风越多,会效果越好一些。 因为麦克风越多呢,一个是, 呃,它的角度越小嘛。 角度越小它的指向性就越强, 指向性就越强,定位就越准。 然后你希望识别 一些什么样的语音, 你是说只是命令啊,只是触发呢, 或者是只是命令呢, 或者说还要加上一个网络? 因为目前也有些产品,它做的 就是本地没有,唤醒都不在本地, 唤醒都是在云。其实 它就是一直在那监听你, 一直监听你,一直把 你材料的数据打包扔给云端, 云端识别回来给它, 发现不是关键字,所以它 就扔掉,又继续在那里循环。 最起码这样它可能做到低功耗, 因为它一直要在那边 工作,整个系统一直在工作。 呃,是否有,还有 一个,呃,这个音乐的回放。 如果有音乐的回放的话呢, 那你要,还要加那个回声抵消。 不然这个回声的音乐 就会送回到云端去了。 然后从供电的考虑, 就是说要选择那个低功耗的, 还是说对功耗无所谓的。 另外就看你是否 有网络了,你这个设备。 要有网络你可以选择, 没有网络的话那就不能选择。 另外还有一个成本的考虑。 因为,就像我前面 说的,其实什么都能做, 只要一个处理能力 差不多的,什么都能做。 如果你的算法写得够好, TI的C5000也是可以的。 因为TI的自己的 Demo就是做在C5000上。 当然了,TI它只是做Demo, 没有把产品上面的一些做进去。 但起码有一个比较,所以说 它的参数到底有多远,我不好说。 最起码它一套 预处理的算法全部跑下来了。 呃,所以说它也可以 选择比较便宜的一个处理器。 如果你要复杂, 加一些另外的功能进去呢, 那可能,也可能,也可以 选一些多核ARM啊这样的去做。 另外的一些考虑就是说 你是否要这个快速唤醒啊之类的。 还有你的大小啊,你是穿戴的, 还是说摆在桌子上的啊这种。 要是可穿戴的话可能要做小一点了。 另外看你其他的功能。因为 从它本身自己的规律处理来说呢, 它只是一个纯算法的东西, 不需要OS的一些功能的支持。 所以说你看其它的功能也有的需要, 是否要加些 这个高级操作系统进去, 加一些网络协议栈 这样的一些驱动进去。 如果是访问云呢, 它里面还要加一个云的压缩, 牵涉到HLOS啊, 有可能跟不同的云有关。 不同的云,你要去, 呃,它所要的格式你打包给它。 这是一个语音处理和音频,呃, 这个前端的一个例子。 从TI的角度来说 我们都有从模拟到数字, 电源那个呢,都有了。所以从, 我给大家推荐的 是我们的1864 ADC。 TI麦克风,模电麦克风。 然后把数据传给DSP, DSP做一些回声抵消啊、 beamforming啊、 自适应滤波啊等等。 然后把这些处理好的音频数据 扔给控制器去做识别。 识别是专门的一个,另外一个范畴, 就是说算法,识别引擎。 有一个做audio跟voice的, 实现频率不一样嘛,另一个范畴。 因为通常都是应用里面, Application,呃,有这种 需求,或者说audio的需求。 这个DSP拿到这个audio数据流呢, 然后做一些 后处理,来增强用户体验。 从这个图呢就是, 麦克风进来扔给DSP, DSP呢,我们在 这个C674x或者DA8, DA8和C674x呢其实,从芯 片的角度来说呢,它是一个东西。 一个东西,就是我们 的DA呢是我们的专门的一个 audio产品的part number。 它是我们那个 带杜比和DTS算法在这里面的。 如果有这种 做杜比或者DTS这种需求的, 呃,可以找TI。 其实这个系列在TI一直有, 从DA5到现在的DA10,一直都有。 就是做杜比啊这些东西的。 因为杜比和DTS它们是只跟 这种芯片厂家合作。 它把算法掩模在芯片的ROM里面, 然后它,要求你, 要求芯片厂家跟你的客户, 要契合它的这个杜比的License, 才允许卖芯片 给那个,给那个客户。 所以你是不,没有人说 我从杜比或者DTS拿一个Library, 我用到任意平台上,没有这个概念。 你比如随便拿个ARM, 找杜比,你给我个Library, 我给你钱。 然后我在自己ARM上来 实现杜比 DTS 这些解码功能,没有这种形式。 只有找专门的器件 这种做法啊。 它没有单独版的一个算法Library, License里面才有这种做法。 只有有限的几家半导体厂商 它才能够合作把这个算法扔到, 出厂的时候也不在这个芯片里面。 那只是说前期的算法提供的方式。 但最后呢,你要做产品的时候, 或者说做完产品认证 的时候,你还要去找杜比做认证。 你把产品送给杜比, 杜比按它的流程测一遍, 过了之后才允许 你在产品上打上杜比的Logo。 不然的话,还不允许你打。 呃,所以前面也说啦,就说 也可以选择C5000或者C6000。 C5000呢,因为它 处理能力有限呢,通常 在我看来两麦克到四麦克,顶天了! 因为我最高只有200兆, 那就是一个16位的定点的DSP。 它的主要特点就是 低功耗、小封装,当然了成本也低。 当然了,在比如七、八年前 我们的C5000还是算是业界 处理能力很强的一个DSP。这个发展很快 现在C6000呢, 当然我们的TI的DSP 在业界一直以来 就是说以高性能著称。 我们有单核到N个核的。 后来都是C6000系列。 C6000和C5000它是完全不兼容。 指令集也不一样啊,等等 什么都不一样。库互相不能用。 就是指令集不一样。 这一个呢,呃, 是一个低功耗的浮点的DSP。 定浮点兼容。 不是说只有浮点,没有定点啊, 没有这个概念。 这个最高主频456够了。 那目前评估下来,一般做, 呃,6+1或者说7+1麦克,都没问题。 七个、八个麦克 都够,呃,它是够的。 而且它的接口很丰富。 在这个应用里边主要是I2S接口, 因为你音频输进来是I2S接口的。 通常的处理器 大家可以 去听一下,去看一下, 它没那么多I2S。 还有可能就一个输入,一个输出。 所以你们了解的话, 你比如看educator方案 它前面加了一个CPLD的板。 呃,多个, 多路那个I2S组成一路TDM, 再送给后面的它的一个ARM平台。 因为他们那种平台, 他们没考虑到这个, 他不是做各种音频用的, 所以它没考虑到这一点。 但这增加了它的系统的一个复杂度。 嗯,而且,而且这里插一个, 就是应该是, 在我看来是一个笑话吧。 就,呃,因为业界目前 它对这个音频, 这个语音识别的应用比较广, 比较关注。所以半导体厂商比较关注, 像Rockchip啊,像MTK啊,也都关注。 像MTK最近还出了一个芯片, 号称就是说针对这种应用的, 那针对这种应用呢有个特点呢, 它说它的那个 音频接口支持多路输入, 支持多路音频输入。 呃,通过TDM的格式。 这就有悖初衷了。 因为它最开始通过 CPLD转成TDM就按时隙嘛, 把很多路组成 一路,按时隙来插进来。 那是开始是 没办法的办法是这么做的, 而不是说你要把目前 而专门是故意做一个这样的 支持TDM的这么一个接口。 你应该做的是多个I2S, 多个独立的I2S就行了。 因为你做成一个TDM, 那你输进来的话, 你要把它各路的数据要解开, 啊,放开,要处理, 肯定要按单路来处理嘛。 那你一定要最起码 加一些memory搬运的这些时间。 对于整个系统来说,其实没有必要。 不是这么做的。 所以它没有对这个应用理解, 才做成这么一个怪怪的东西。 呃,我们因为, TI一直在音频这个应用上面 是TI的一个应用方向吧, 所以我们一直配合多路。 呃,I2S的支持是存在的。 那刚刚很多人问我 什么时候要用这个多路I2S, 呃,因为可能,因为 对音频不是那么了解嘛, 呃,问这个问题也很正常。 那打个比方,比如说5.1、 7.1以及像现在的那个Echo模式, 这种环绕。 5.1那就是要六个,接六个喇叭, 六个喇叭,就六个声道。 7.1那就是八个声道,八个喇叭。 以前AT模式是多了,14个喇叭, 因为它在顶上又加了四个喇叭。 造成HiFi的感觉, 如同环绕声效果。 那每一路其实它同时都有声音 输出去的 那从源头来说DSP这边处理 完送出去的每一路都是同时在送, 它同时在一个block上面,在一个 帧同步,在一个block里同时在送。 所以说需要很多路这个I2S线。 当然因为他们是做平板, 或者说是做等等之类的 这种应用的,机顶盒这种应用的话, 它只有左右声道,够啦。 不需要做这个环绕声, 所以说它通常只有一路I2S。 呃,这是一个前处理啊, 主要是前处理这一块。这个 语音识别这个系统这个数据流程, 就是麦克风进来, 进来之后呢beamforming, beamforming呢, 然后就找到,就主要是找出方向嘛。 你的声音是,哪个方向声音最强, 然后做一个选择,再找回 这个,找出是哪一路方向来的数据, 就选择那一路的数据。 然后做一个动态范围 压缩,或者说自动增益控制也好。 然后一开始做本地 识别呢,还是做交互频段识别? 呃,从TI来说呢,TI做到 DRC这一块,啊,做到DRC这一块。 这前面都做了。 还有AEC,但是TI的,但目前我们没有加进去 TI有类似的算法, 但是没有加进去。 没有去加。加了有的,看你怎么加。 有的是加到这里,再麦克风进来, 在做beamforming之前就要加AEC。 就是每一路上面我们 都把那个回声呢给消除掉。 这边效果是最好。 有的人呢,做法只晓得一侧, 他只做一次,就是说 往前做完beamforming之后, 我再给出那一步来做这个回声抵消, 抵消掉。这个效果呢, 双边双向的呢, 会想我们只能做一次; 而这个呢, 你有几个麦克风就做几次, 比如说八个就做八次。 看怎么去权衡这个 效果和运算能力的需求, 这边会有个权衡。 呃,TI做的, 就是TI做了很多TI规范, 就是内部做了一些参考设计, 方便客户去用好这么一个器件。 以一个,通过, 这是那个麦克风11板,麦克风板。 呃,做了一个 环形的环阵,8通道的环阵。 两个1864与C5517和K2G, 以及跟C6743啊, 我们跟三个板子配套的, 呃,做了板子跟我移植上去。 在C674x 而且加了一个跟我们的335x的 Beagleboard板做,以及YLink-8, 去访问云,访问亚马逊的云。 呃,Demo全部都,从Demo 的流程上面来看,我们都跑通了。 这是那个环形板的外观母板。 呃,这个,这种 麦克风板它其实是有讲究的啊。 其实是有讲究的。 因为,我们可能, 你以前对这个麦克风,呃, 多少的这个概念可能跟这个, 像我们这个麦克风阵列这种 应用的需求可能想象的不一样。 比如说我们四客的电话会议。 那上面是有几个 喇叭,有几个, 其实它是角上,每个 角上它都有个麦克风。 但是它那个麦克风呢, 首先不是说像这种通过 beamforming 的算法来加密隔离信号的, 而是说只是为了不同的方向能够, 从不同方向仅仅是 找一个,你是在哪边说话。 并没有说做一个增强,做个 beamforming来把这个增强。 而这个板呢可能,可以跟我们的 5517或者K2G, 以及C6747都可以相连。 我们为每个板子都做了一个Demo, 把Demo程序都跑上去了。 而且是在网上可以公开下载。 这是1864的一个接口,因为它是TI的 一个性能比较好的一个103dB SNR, 功耗也还可以。 这是四合一的一个ADC, 呃,如果你是选数字 麦克的话呢就不需要ADC啦, 那系统设计上面就相对简单很多, 没有电容电阻那些乱七八糟的东西。 就一块光盘都行。 就跟几个星阵一样。
呃,设计这个系统呢 就是说,你一个拷贝呢, 它因为麦克风阵列的话它其实,呃, 形式也很重要! 呃,是环形呢,还是说线性。 因为,你如果 你这个设备是挂在墙上的, 像电视机之类的, 空调是挂在墙上的, 你对着它,永远是一个...它 只是180度,不是一个环形的。 只有180度。所以说像 这种情况下通常是做一个线性的, 呃,麦克风阵列会好一些。 因为你做beamforming时 按一个方向去做那个能量汇聚 会好一些。 而你做一个, 如果是摆在桌子上的呢, 你有可能会从各个方向去跟它说话, 呃,那就是说做一个环阵。 比如说几加一, 6+1呀,这样呢,会好一些。 呃,就是要多少个麦克风, 这个阵列里边要多少个麦克风。 那其实呢,比如说你是环阵的话, 或者说是环阵的话,那取决于你希 望做几个方向的这个beamforming, 你希望把这个角度分得多细。 因为说白了, 那个环阵它其实就是, 比如说6+1或者7+1, 它就是中间一个呢 加上一条线上的那就是 这头是三个, 三个麦克风是在一个线上, 它以这样来区分方向。 它都识音, 它就是说,从不同的角度去找 这个是哪一个方向来的声音。 而在这个方向 之外的,它是做一个预测, 它把这个, 在这个方向做一个增强, 是这样来,呃, 就是说找到你的最佳的音。 其实它就是最终做 下来,呃,从一个系统层来说呢, 它会知道你这个说话是 在麦克风阵列的哪一个方向, 而不是说仅简单地去里面 随便选一个麦克风的声音。 哪怕你希望多远, 那它就越远的话, 它麦克风越多,会效果越好一些。 因为麦克风越多呢,一个是, 呃,它的角度越小嘛。 角度越小它的指向性就越强, 指向性就越强,定位就越准。 然后你希望识别 一些什么样的语音, 你是说只是命令啊,只是触发呢, 或者是只是命令呢, 或者说还要加上一个网络? 因为目前也有些产品,它做的 就是本地没有,唤醒都不在本地, 唤醒都是在云。其实 它就是一直在那监听你, 一直监听你,一直把 你材料的数据打包扔给云端, 云端识别回来给它, 发现不是关键字,所以它 就扔掉,又继续在那里循环。 最起码这样它可能做到低功耗, 因为它一直要在那边 工作,整个系统一直在工作。 呃,是否有,还有 一个,呃,这个音乐的回放。 如果有音乐的回放的话呢, 那你要,还要加那个回声抵消。 不然这个回声的音乐 就会送回到云端去了。 然后从供电的考虑, 就是说要选择那个低功耗的, 还是说对功耗无所谓的。 另外就看你是否 有网络了,你这个设备。 要有网络你可以选择, 没有网络的话那就不能选择。 另外还有一个成本的考虑。 因为,就像我前面 说的,其实什么都能做, 只要一个处理能力 差不多的,什么都能做。 如果你的算法写得够好, TI的C5000也是可以的。 因为TI的自己的 Demo就是做在C5000上。 当然了,TI它只是做Demo, 没有把产品上面的一些做进去。 但起码有一个比较,所以说 它的参数到底有多远,我不好说。 最起码它一套 预处理的算法全部跑下来了。 呃,所以说它也可以 选择比较便宜的一个处理器。 如果你要复杂, 加一些另外的功能进去呢, 那可能,也可能,也可以 选一些多核ARM啊这样的去做。 另外的一些考虑就是说 你是否要这个快速唤醒啊之类的。 还有你的大小啊,你是穿戴的, 还是说摆在桌子上的啊这种。 要是可穿戴的话可能要做小一点了。 另外看你其他的功能。因为 从它本身自己的规律处理来说呢, 它只是一个纯算法的东西, 不需要OS的一些功能的支持。 所以说你看其它的功能也有的需要, 是否要加些 这个高级操作系统进去, 加一些网络协议栈 这样的一些驱动进去。 如果是访问云呢, 它里面还要加一个云的压缩, 牵涉到HLOS啊, 有可能跟不同的云有关。 不同的云,你要去, 呃,它所要的格式你打包给它。 这是一个语音处理和音频,呃, 这个前端的一个例子。 从TI的角度来说 我们都有从模拟到数字, 电源那个呢,都有了。所以从, 我给大家推荐的 是我们的1864 ADC。 TI麦克风,模电麦克风。 然后把数据传给DSP, DSP做一些回声抵消啊、 beamforming啊、 自适应滤波啊等等。 然后把这些处理好的音频数据 扔给控制器去做识别。 识别是专门的一个,另外一个范畴, 就是说算法,识别引擎。 有一个做audio跟voice的, 实现频率不一样嘛,另一个范畴。 因为通常都是应用里面, Application,呃,有这种 需求,或者说audio的需求。 这个DSP拿到这个audio数据流呢, 然后做一些 后处理,来增强用户体验。 从这个图呢就是, 麦克风进来扔给DSP, DSP呢,我们在 这个C674x或者DA8, DA8和C674x呢其实,从芯 片的角度来说呢,它是一个东西。 一个东西,就是我们 的DA呢是我们的专门的一个 audio产品的part number。 它是我们那个 带杜比和DTS算法在这里面的。 如果有这种 做杜比或者DTS这种需求的, 呃,可以找TI。 其实这个系列在TI一直有, 从DA5到现在的DA10,一直都有。 就是做杜比啊这些东西的。 因为杜比和DTS它们是只跟 这种芯片厂家合作。 它把算法掩模在芯片的ROM里面, 然后它,要求你, 要求芯片厂家跟你的客户, 要契合它的这个杜比的License, 才允许卖芯片 给那个,给那个客户。 所以你是不,没有人说 我从杜比或者DTS拿一个Library, 我用到任意平台上,没有这个概念。 你比如随便拿个ARM, 找杜比,你给我个Library, 我给你钱。 然后我在自己ARM上来 实现杜比 DTS 这些解码功能,没有这种形式。 只有找专门的器件 这种做法啊。 它没有单独版的一个算法Library, License里面才有这种做法。 只有有限的几家半导体厂商 它才能够合作把这个算法扔到, 出厂的时候也不在这个芯片里面。 那只是说前期的算法提供的方式。 但最后呢,你要做产品的时候, 或者说做完产品认证 的时候,你还要去找杜比做认证。 你把产品送给杜比, 杜比按它的流程测一遍, 过了之后才允许 你在产品上打上杜比的Logo。 不然的话,还不允许你打。 呃,所以前面也说啦,就说 也可以选择C5000或者C6000。 C5000呢,因为它 处理能力有限呢,通常 在我看来两麦克到四麦克,顶天了! 因为我最高只有200兆, 那就是一个16位的定点的DSP。 它的主要特点就是 低功耗、小封装,当然了成本也低。 当然了,在比如七、八年前 我们的C5000还是算是业界 处理能力很强的一个DSP。这个发展很快 现在C6000呢, 当然我们的TI的DSP 在业界一直以来 就是说以高性能著称。 我们有单核到N个核的。 后来都是C6000系列。 C6000和C5000它是完全不兼容。 指令集也不一样啊,等等 什么都不一样。库互相不能用。 就是指令集不一样。 这一个呢,呃, 是一个低功耗的浮点的DSP。 定浮点兼容。 不是说只有浮点,没有定点啊, 没有这个概念。 这个最高主频456够了。 那目前评估下来,一般做, 呃,6+1或者说7+1麦克,都没问题。 七个、八个麦克 都够,呃,它是够的。 而且它的接口很丰富。 在这个应用里边主要是I2S接口, 因为你音频输进来是I2S接口的。 通常的处理器 大家可以 去听一下,去看一下, 它没那么多I2S。 还有可能就一个输入,一个输出。 所以你们了解的话, 你比如看educator方案 它前面加了一个CPLD的板。 呃,多个, 多路那个I2S组成一路TDM, 再送给后面的它的一个ARM平台。 因为他们那种平台, 他们没考虑到这个, 他不是做各种音频用的, 所以它没考虑到这一点。 但这增加了它的系统的一个复杂度。 嗯,而且,而且这里插一个, 就是应该是, 在我看来是一个笑话吧。 就,呃,因为业界目前 它对这个音频, 这个语音识别的应用比较广, 比较关注。所以半导体厂商比较关注, 像Rockchip啊,像MTK啊,也都关注。 像MTK最近还出了一个芯片, 号称就是说针对这种应用的, 那针对这种应用呢有个特点呢, 它说它的那个 音频接口支持多路输入, 支持多路音频输入。 呃,通过TDM的格式。 这就有悖初衷了。 因为它最开始通过 CPLD转成TDM就按时隙嘛, 把很多路组成 一路,按时隙来插进来。 那是开始是 没办法的办法是这么做的, 而不是说你要把目前 而专门是故意做一个这样的 支持TDM的这么一个接口。 你应该做的是多个I2S, 多个独立的I2S就行了。 因为你做成一个TDM, 那你输进来的话, 你要把它各路的数据要解开, 啊,放开,要处理, 肯定要按单路来处理嘛。 那你一定要最起码 加一些memory搬运的这些时间。 对于整个系统来说,其实没有必要。 不是这么做的。 所以它没有对这个应用理解, 才做成这么一个怪怪的东西。 呃,我们因为, TI一直在音频这个应用上面 是TI的一个应用方向吧, 所以我们一直配合多路。 呃,I2S的支持是存在的。 那刚刚很多人问我 什么时候要用这个多路I2S, 呃,因为可能,因为 对音频不是那么了解嘛, 呃,问这个问题也很正常。 那打个比方,比如说5.1、 7.1以及像现在的那个Echo模式, 这种环绕。 5.1那就是要六个,接六个喇叭, 六个喇叭,就六个声道。 7.1那就是八个声道,八个喇叭。 以前AT模式是多了,14个喇叭, 因为它在顶上又加了四个喇叭。 造成HiFi的感觉, 如同环绕声效果。 那每一路其实它同时都有声音 输出去的 那从源头来说DSP这边处理 完送出去的每一路都是同时在送, 它同时在一个block上面,在一个 帧同步,在一个block里同时在送。 所以说需要很多路这个I2S线。 当然因为他们是做平板, 或者说是做等等之类的 这种应用的,机顶盒这种应用的话, 它只有左右声道,够啦。 不需要做这个环绕声, 所以说它通常只有一路I2S。 呃,这是一个前处理啊, 主要是前处理这一块。这个 语音识别这个系统这个数据流程, 就是麦克风进来, 进来之后呢beamforming, beamforming呢, 然后就找到,就主要是找出方向嘛。 你的声音是,哪个方向声音最强, 然后做一个选择,再找回 这个,找出是哪一路方向来的数据, 就选择那一路的数据。 然后做一个动态范围 压缩,或者说自动增益控制也好。 然后一开始做本地 识别呢,还是做交互频段识别? 呃,从TI来说呢,TI做到 DRC这一块,啊,做到DRC这一块。 这前面都做了。 还有AEC,但是TI的,但目前我们没有加进去 TI有类似的算法, 但是没有加进去。 没有去加。加了有的,看你怎么加。 有的是加到这里,再麦克风进来, 在做beamforming之前就要加AEC。 就是每一路上面我们 都把那个回声呢给消除掉。 这边效果是最好。 有的人呢,做法只晓得一侧, 他只做一次,就是说 往前做完beamforming之后, 我再给出那一步来做这个回声抵消, 抵消掉。这个效果呢, 双边双向的呢, 会想我们只能做一次; 而这个呢, 你有几个麦克风就做几次, 比如说八个就做八次。 看怎么去权衡这个 效果和运算能力的需求, 这边会有个权衡。 呃,TI做的, 就是TI做了很多TI规范, 就是内部做了一些参考设计, 方便客户去用好这么一个器件。 以一个,通过, 这是那个麦克风11板,麦克风板。 呃,做了一个 环形的环阵,8通道的环阵。 两个1864与C5517和K2G, 以及跟C6743啊, 我们跟三个板子配套的, 呃,做了板子跟我移植上去。 在C674x 而且加了一个跟我们的335x的 Beagleboard板做,以及YLink-8, 去访问云,访问亚马逊的云。 呃,Demo全部都,从Demo 的流程上面来看,我们都跑通了。 这是那个环形板的外观母板。 呃,这个,这种 麦克风板它其实是有讲究的啊。 其实是有讲究的。 因为,我们可能, 你以前对这个麦克风,呃, 多少的这个概念可能跟这个, 像我们这个麦克风阵列这种 应用的需求可能想象的不一样。 比如说我们四客的电话会议。 那上面是有几个 喇叭,有几个, 其实它是角上,每个 角上它都有个麦克风。 但是它那个麦克风呢, 首先不是说像这种通过 beamforming 的算法来加密隔离信号的, 而是说只是为了不同的方向能够, 从不同方向仅仅是 找一个,你是在哪边说话。 并没有说做一个增强,做个 beamforming来把这个增强。 而这个板呢可能,可以跟我们的 5517或者K2G, 以及C6747都可以相连。 我们为每个板子都做了一个Demo, 把Demo程序都跑上去了。 而且是在网上可以公开下载。 这是1864的一个接口,因为它是TI的 一个性能比较好的一个103dB SNR, 功耗也还可以。 这是四合一的一个ADC, 呃,如果你是选数字 麦克的话呢就不需要ADC啦, 那系统设计上面就相对简单很多, 没有电容电阻那些乱七八糟的东西。 就一块光盘都行。 就跟几个星阵一样。
呃,设计这个系统呢 就是说,你一个拷贝呢,
它因为麦克风阵列的话它其实,呃,
形式也很重要!
呃,是环形呢,还是说线性。
因为,你如果 你这个设备是挂在墙上的,
像电视机之类的, 空调是挂在墙上的,
你对着它,永远是一个...它 只是180度,不是一个环形的。
只有180度。所以说像 这种情况下通常是做一个线性的,
呃,麦克风阵列会好一些。
因为你做beamforming时 按一个方向去做那个能量汇聚
会好一些。
而你做一个, 如果是摆在桌子上的呢,
你有可能会从各个方向去跟它说话,
呃,那就是说做一个环阵。
比如说几加一, 6+1呀,这样呢,会好一些。
呃,就是要多少个麦克风,
这个阵列里边要多少个麦克风。
那其实呢,比如说你是环阵的话,
或者说是环阵的话,那取决于你希 望做几个方向的这个beamforming,
你希望把这个角度分得多细。
因为说白了, 那个环阵它其实就是,
比如说6+1或者7+1,
它就是中间一个呢 加上一条线上的那就是
这头是三个, 三个麦克风是在一个线上,
它以这样来区分方向。
它都识音, 它就是说,从不同的角度去找
这个是哪一个方向来的声音。
而在这个方向 之外的,它是做一个预测,
它把这个, 在这个方向做一个增强,
是这样来,呃, 就是说找到你的最佳的音。
其实它就是最终做 下来,呃,从一个系统层来说呢,
它会知道你这个说话是 在麦克风阵列的哪一个方向,
而不是说仅简单地去里面 随便选一个麦克风的声音。
哪怕你希望多远, 那它就越远的话,
它麦克风越多,会效果越好一些。
因为麦克风越多呢,一个是,
呃,它的角度越小嘛。 角度越小它的指向性就越强,
指向性就越强,定位就越准。
然后你希望识别 一些什么样的语音,
你是说只是命令啊,只是触发呢,
或者是只是命令呢, 或者说还要加上一个网络?
因为目前也有些产品,它做的 就是本地没有,唤醒都不在本地,
唤醒都是在云。其实 它就是一直在那监听你,
一直监听你,一直把 你材料的数据打包扔给云端,
云端识别回来给它,
发现不是关键字,所以它 就扔掉,又继续在那里循环。
最起码这样它可能做到低功耗,
因为它一直要在那边 工作,整个系统一直在工作。
呃,是否有,还有 一个,呃,这个音乐的回放。
如果有音乐的回放的话呢, 那你要,还要加那个回声抵消。
不然这个回声的音乐 就会送回到云端去了。
然后从供电的考虑, 就是说要选择那个低功耗的,
还是说对功耗无所谓的。
另外就看你是否 有网络了,你这个设备。
要有网络你可以选择, 没有网络的话那就不能选择。
另外还有一个成本的考虑。
因为,就像我前面 说的,其实什么都能做,
只要一个处理能力 差不多的,什么都能做。
如果你的算法写得够好, TI的C5000也是可以的。
因为TI的自己的 Demo就是做在C5000上。
当然了,TI它只是做Demo, 没有把产品上面的一些做进去。
但起码有一个比较,所以说 它的参数到底有多远,我不好说。
最起码它一套 预处理的算法全部跑下来了。
呃,所以说它也可以 选择比较便宜的一个处理器。
如果你要复杂, 加一些另外的功能进去呢,
那可能,也可能,也可以 选一些多核ARM啊这样的去做。
另外的一些考虑就是说 你是否要这个快速唤醒啊之类的。
还有你的大小啊,你是穿戴的,
还是说摆在桌子上的啊这种。
要是可穿戴的话可能要做小一点了。
另外看你其他的功能。因为 从它本身自己的规律处理来说呢,
它只是一个纯算法的东西, 不需要OS的一些功能的支持。
所以说你看其它的功能也有的需要,
是否要加些 这个高级操作系统进去,
加一些网络协议栈 这样的一些驱动进去。
如果是访问云呢, 它里面还要加一个云的压缩,
牵涉到HLOS啊, 有可能跟不同的云有关。
不同的云,你要去, 呃,它所要的格式你打包给它。
这是一个语音处理和音频,呃,
这个前端的一个例子。
从TI的角度来说 我们都有从模拟到数字,
电源那个呢,都有了。所以从,
我给大家推荐的 是我们的1864 ADC。
TI麦克风,模电麦克风。
然后把数据传给DSP,
DSP做一些回声抵消啊、
beamforming啊、 自适应滤波啊等等。
然后把这些处理好的音频数据
扔给控制器去做识别。
识别是专门的一个,另外一个范畴,
就是说算法,识别引擎。
有一个做audio跟voice的,
实现频率不一样嘛,另一个范畴。
因为通常都是应用里面,
Application,呃,有这种 需求,或者说audio的需求。
这个DSP拿到这个audio数据流呢,
然后做一些 后处理,来增强用户体验。
从这个图呢就是, 麦克风进来扔给DSP,
DSP呢,我们在 这个C674x或者DA8,
DA8和C674x呢其实,从芯 片的角度来说呢,它是一个东西。
一个东西,就是我们 的DA呢是我们的专门的一个
audio产品的part number。
它是我们那个 带杜比和DTS算法在这里面的。
如果有这种 做杜比或者DTS这种需求的,
呃,可以找TI。
其实这个系列在TI一直有,
从DA5到现在的DA10,一直都有。
就是做杜比啊这些东西的。 因为杜比和DTS它们是只跟
这种芯片厂家合作。
它把算法掩模在芯片的ROM里面,
然后它,要求你,
要求芯片厂家跟你的客户,
要契合它的这个杜比的License,
才允许卖芯片 给那个,给那个客户。
所以你是不,没有人说 我从杜比或者DTS拿一个Library,
我用到任意平台上,没有这个概念。
你比如随便拿个ARM, 找杜比,你给我个Library,
我给你钱。 然后我在自己ARM上来
实现杜比 DTS 这些解码功能,没有这种形式。
只有找专门的器件 这种做法啊。
它没有单独版的一个算法Library,
License里面才有这种做法。
只有有限的几家半导体厂商
它才能够合作把这个算法扔到,
出厂的时候也不在这个芯片里面。
那只是说前期的算法提供的方式。
但最后呢,你要做产品的时候,
或者说做完产品认证 的时候,你还要去找杜比做认证。
你把产品送给杜比, 杜比按它的流程测一遍,
过了之后才允许 你在产品上打上杜比的Logo。
不然的话,还不允许你打。
呃,所以前面也说啦,就说 也可以选择C5000或者C6000。
C5000呢,因为它 处理能力有限呢,通常
在我看来两麦克到四麦克,顶天了!
因为我最高只有200兆, 那就是一个16位的定点的DSP。
它的主要特点就是 低功耗、小封装,当然了成本也低。
当然了,在比如七、八年前 我们的C5000还是算是业界
处理能力很强的一个DSP。这个发展很快
现在C6000呢, 当然我们的TI的DSP
在业界一直以来 就是说以高性能著称。
我们有单核到N个核的。
后来都是C6000系列。 C6000和C5000它是完全不兼容。
指令集也不一样啊,等等 什么都不一样。库互相不能用。
就是指令集不一样。
这一个呢,呃, 是一个低功耗的浮点的DSP。
定浮点兼容。 不是说只有浮点,没有定点啊,
没有这个概念。 这个最高主频456够了。
那目前评估下来,一般做,
呃,6+1或者说7+1麦克,都没问题。
七个、八个麦克 都够,呃,它是够的。
而且它的接口很丰富。
在这个应用里边主要是I2S接口,
因为你音频输进来是I2S接口的。
通常的处理器 大家可以 去听一下,去看一下,
它没那么多I2S。 还有可能就一个输入,一个输出。
所以你们了解的话, 你比如看educator方案
它前面加了一个CPLD的板。
呃,多个, 多路那个I2S组成一路TDM,
再送给后面的它的一个ARM平台。
因为他们那种平台, 他们没考虑到这个,
他不是做各种音频用的, 所以它没考虑到这一点。
但这增加了它的系统的一个复杂度。
嗯,而且,而且这里插一个,
就是应该是, 在我看来是一个笑话吧。
就,呃,因为业界目前
它对这个音频, 这个语音识别的应用比较广,
比较关注。所以半导体厂商比较关注,
像Rockchip啊,像MTK啊,也都关注。
像MTK最近还出了一个芯片, 号称就是说针对这种应用的,
那针对这种应用呢有个特点呢,
它说它的那个 音频接口支持多路输入,
支持多路音频输入。 呃,通过TDM的格式。
这就有悖初衷了。
因为它最开始通过 CPLD转成TDM就按时隙嘛,
把很多路组成 一路,按时隙来插进来。
那是开始是 没办法的办法是这么做的,
而不是说你要把目前
而专门是故意做一个这样的
支持TDM的这么一个接口。
你应该做的是多个I2S, 多个独立的I2S就行了。
因为你做成一个TDM,
那你输进来的话, 你要把它各路的数据要解开,
啊,放开,要处理, 肯定要按单路来处理嘛。
那你一定要最起码 加一些memory搬运的这些时间。
对于整个系统来说,其实没有必要。
不是这么做的。 所以它没有对这个应用理解,
才做成这么一个怪怪的东西。
呃,我们因为, TI一直在音频这个应用上面
是TI的一个应用方向吧, 所以我们一直配合多路。
呃,I2S的支持是存在的。
那刚刚很多人问我 什么时候要用这个多路I2S,
呃,因为可能,因为 对音频不是那么了解嘛,
呃,问这个问题也很正常。
那打个比方,比如说5.1、 7.1以及像现在的那个Echo模式,
这种环绕。 5.1那就是要六个,接六个喇叭,
六个喇叭,就六个声道。
7.1那就是八个声道,八个喇叭。 以前AT模式是多了,14个喇叭,
因为它在顶上又加了四个喇叭。
造成HiFi的感觉, 如同环绕声效果。
那每一路其实它同时都有声音 输出去的
那从源头来说DSP这边处理 完送出去的每一路都是同时在送,
它同时在一个block上面,在一个 帧同步,在一个block里同时在送。
所以说需要很多路这个I2S线。
当然因为他们是做平板,
或者说是做等等之类的 这种应用的,机顶盒这种应用的话,
它只有左右声道,够啦。
不需要做这个环绕声, 所以说它通常只有一路I2S。
呃,这是一个前处理啊,
主要是前处理这一块。这个 语音识别这个系统这个数据流程,
就是麦克风进来, 进来之后呢beamforming,
beamforming呢, 然后就找到,就主要是找出方向嘛。
你的声音是,哪个方向声音最强,
然后做一个选择,再找回 这个,找出是哪一路方向来的数据,
就选择那一路的数据。 然后做一个动态范围
压缩,或者说自动增益控制也好。
然后一开始做本地 识别呢,还是做交互频段识别?
呃,从TI来说呢,TI做到 DRC这一块,啊,做到DRC这一块。
这前面都做了。
还有AEC,但是TI的,但目前我们没有加进去 TI有类似的算法,
但是没有加进去。
没有去加。加了有的,看你怎么加。
有的是加到这里,再麦克风进来,
在做beamforming之前就要加AEC。
就是每一路上面我们 都把那个回声呢给消除掉。
这边效果是最好。 有的人呢,做法只晓得一侧,
他只做一次,就是说 往前做完beamforming之后,
我再给出那一步来做这个回声抵消,
抵消掉。这个效果呢,
双边双向的呢, 会想我们只能做一次;
而这个呢, 你有几个麦克风就做几次,
比如说八个就做八次。
看怎么去权衡这个 效果和运算能力的需求,
这边会有个权衡。
呃,TI做的, 就是TI做了很多TI规范,
就是内部做了一些参考设计, 方便客户去用好这么一个器件。
以一个,通过, 这是那个麦克风11板,麦克风板。
呃,做了一个 环形的环阵,8通道的环阵。
两个1864与C5517和K2G,
以及跟C6743啊,
我们跟三个板子配套的, 呃,做了板子跟我移植上去。
在C674x
而且加了一个跟我们的335x的
Beagleboard板做,以及YLink-8,
去访问云,访问亚马逊的云。
呃,Demo全部都,从Demo 的流程上面来看,我们都跑通了。
这是那个环形板的外观母板。
呃,这个,这种 麦克风板它其实是有讲究的啊。
其实是有讲究的。 因为,我们可能,
你以前对这个麦克风,呃,
多少的这个概念可能跟这个,
像我们这个麦克风阵列这种 应用的需求可能想象的不一样。
比如说我们四客的电话会议。
那上面是有几个 喇叭,有几个,
其实它是角上,每个 角上它都有个麦克风。
但是它那个麦克风呢, 首先不是说像这种通过
beamforming 的算法来加密隔离信号的,
而是说只是为了不同的方向能够,
从不同方向仅仅是 找一个,你是在哪边说话。
并没有说做一个增强,做个 beamforming来把这个增强。
而这个板呢可能,可以跟我们的
5517或者K2G, 以及C6747都可以相连。
我们为每个板子都做了一个Demo,
把Demo程序都跑上去了。
而且是在网上可以公开下载。
这是1864的一个接口,因为它是TI的 一个性能比较好的一个103dB SNR,
功耗也还可以。
这是四合一的一个ADC,
呃,如果你是选数字 麦克的话呢就不需要ADC啦,
那系统设计上面就相对简单很多,
没有电容电阻那些乱七八糟的东西。
就一块光盘都行。 就跟几个星阵一样。
呃,设计这个系统呢 就是说,你一个拷贝呢, 它因为麦克风阵列的话它其实,呃, 形式也很重要! 呃,是环形呢,还是说线性。 因为,你如果 你这个设备是挂在墙上的, 像电视机之类的, 空调是挂在墙上的, 你对着它,永远是一个...它 只是180度,不是一个环形的。 只有180度。所以说像 这种情况下通常是做一个线性的, 呃,麦克风阵列会好一些。 因为你做beamforming时 按一个方向去做那个能量汇聚 会好一些。 而你做一个, 如果是摆在桌子上的呢, 你有可能会从各个方向去跟它说话, 呃,那就是说做一个环阵。 比如说几加一, 6+1呀,这样呢,会好一些。 呃,就是要多少个麦克风, 这个阵列里边要多少个麦克风。 那其实呢,比如说你是环阵的话, 或者说是环阵的话,那取决于你希 望做几个方向的这个beamforming, 你希望把这个角度分得多细。 因为说白了, 那个环阵它其实就是, 比如说6+1或者7+1, 它就是中间一个呢 加上一条线上的那就是 这头是三个, 三个麦克风是在一个线上, 它以这样来区分方向。 它都识音, 它就是说,从不同的角度去找 这个是哪一个方向来的声音。 而在这个方向 之外的,它是做一个预测, 它把这个, 在这个方向做一个增强, 是这样来,呃, 就是说找到你的最佳的音。 其实它就是最终做 下来,呃,从一个系统层来说呢, 它会知道你这个说话是 在麦克风阵列的哪一个方向, 而不是说仅简单地去里面 随便选一个麦克风的声音。 哪怕你希望多远, 那它就越远的话, 它麦克风越多,会效果越好一些。 因为麦克风越多呢,一个是, 呃,它的角度越小嘛。 角度越小它的指向性就越强, 指向性就越强,定位就越准。 然后你希望识别 一些什么样的语音, 你是说只是命令啊,只是触发呢, 或者是只是命令呢, 或者说还要加上一个网络? 因为目前也有些产品,它做的 就是本地没有,唤醒都不在本地, 唤醒都是在云。其实 它就是一直在那监听你, 一直监听你,一直把 你材料的数据打包扔给云端, 云端识别回来给它, 发现不是关键字,所以它 就扔掉,又继续在那里循环。 最起码这样它可能做到低功耗, 因为它一直要在那边 工作,整个系统一直在工作。 呃,是否有,还有 一个,呃,这个音乐的回放。 如果有音乐的回放的话呢, 那你要,还要加那个回声抵消。 不然这个回声的音乐 就会送回到云端去了。 然后从供电的考虑, 就是说要选择那个低功耗的, 还是说对功耗无所谓的。 另外就看你是否 有网络了,你这个设备。 要有网络你可以选择, 没有网络的话那就不能选择。 另外还有一个成本的考虑。 因为,就像我前面 说的,其实什么都能做, 只要一个处理能力 差不多的,什么都能做。 如果你的算法写得够好, TI的C5000也是可以的。 因为TI的自己的 Demo就是做在C5000上。 当然了,TI它只是做Demo, 没有把产品上面的一些做进去。 但起码有一个比较,所以说 它的参数到底有多远,我不好说。 最起码它一套 预处理的算法全部跑下来了。 呃,所以说它也可以 选择比较便宜的一个处理器。 如果你要复杂, 加一些另外的功能进去呢, 那可能,也可能,也可以 选一些多核ARM啊这样的去做。 另外的一些考虑就是说 你是否要这个快速唤醒啊之类的。 还有你的大小啊,你是穿戴的, 还是说摆在桌子上的啊这种。 要是可穿戴的话可能要做小一点了。 另外看你其他的功能。因为 从它本身自己的规律处理来说呢, 它只是一个纯算法的东西, 不需要OS的一些功能的支持。 所以说你看其它的功能也有的需要, 是否要加些 这个高级操作系统进去, 加一些网络协议栈 这样的一些驱动进去。 如果是访问云呢, 它里面还要加一个云的压缩, 牵涉到HLOS啊, 有可能跟不同的云有关。 不同的云,你要去, 呃,它所要的格式你打包给它。 这是一个语音处理和音频,呃, 这个前端的一个例子。 从TI的角度来说 我们都有从模拟到数字, 电源那个呢,都有了。所以从, 我给大家推荐的 是我们的1864 ADC。 TI麦克风,模电麦克风。 然后把数据传给DSP, DSP做一些回声抵消啊、 beamforming啊、 自适应滤波啊等等。 然后把这些处理好的音频数据 扔给控制器去做识别。 识别是专门的一个,另外一个范畴, 就是说算法,识别引擎。 有一个做audio跟voice的, 实现频率不一样嘛,另一个范畴。 因为通常都是应用里面, Application,呃,有这种 需求,或者说audio的需求。 这个DSP拿到这个audio数据流呢, 然后做一些 后处理,来增强用户体验。 从这个图呢就是, 麦克风进来扔给DSP, DSP呢,我们在 这个C674x或者DA8, DA8和C674x呢其实,从芯 片的角度来说呢,它是一个东西。 一个东西,就是我们 的DA呢是我们的专门的一个 audio产品的part number。 它是我们那个 带杜比和DTS算法在这里面的。 如果有这种 做杜比或者DTS这种需求的, 呃,可以找TI。 其实这个系列在TI一直有, 从DA5到现在的DA10,一直都有。 就是做杜比啊这些东西的。 因为杜比和DTS它们是只跟 这种芯片厂家合作。 它把算法掩模在芯片的ROM里面, 然后它,要求你, 要求芯片厂家跟你的客户, 要契合它的这个杜比的License, 才允许卖芯片 给那个,给那个客户。 所以你是不,没有人说 我从杜比或者DTS拿一个Library, 我用到任意平台上,没有这个概念。 你比如随便拿个ARM, 找杜比,你给我个Library, 我给你钱。 然后我在自己ARM上来 实现杜比 DTS 这些解码功能,没有这种形式。 只有找专门的器件 这种做法啊。 它没有单独版的一个算法Library, License里面才有这种做法。 只有有限的几家半导体厂商 它才能够合作把这个算法扔到, 出厂的时候也不在这个芯片里面。 那只是说前期的算法提供的方式。 但最后呢,你要做产品的时候, 或者说做完产品认证 的时候,你还要去找杜比做认证。 你把产品送给杜比, 杜比按它的流程测一遍, 过了之后才允许 你在产品上打上杜比的Logo。 不然的话,还不允许你打。 呃,所以前面也说啦,就说 也可以选择C5000或者C6000。 C5000呢,因为它 处理能力有限呢,通常 在我看来两麦克到四麦克,顶天了! 因为我最高只有200兆, 那就是一个16位的定点的DSP。 它的主要特点就是 低功耗、小封装,当然了成本也低。 当然了,在比如七、八年前 我们的C5000还是算是业界 处理能力很强的一个DSP。这个发展很快 现在C6000呢, 当然我们的TI的DSP 在业界一直以来 就是说以高性能著称。 我们有单核到N个核的。 后来都是C6000系列。 C6000和C5000它是完全不兼容。 指令集也不一样啊,等等 什么都不一样。库互相不能用。 就是指令集不一样。 这一个呢,呃, 是一个低功耗的浮点的DSP。 定浮点兼容。 不是说只有浮点,没有定点啊, 没有这个概念。 这个最高主频456够了。 那目前评估下来,一般做, 呃,6+1或者说7+1麦克,都没问题。 七个、八个麦克 都够,呃,它是够的。 而且它的接口很丰富。 在这个应用里边主要是I2S接口, 因为你音频输进来是I2S接口的。 通常的处理器 大家可以 去听一下,去看一下, 它没那么多I2S。 还有可能就一个输入,一个输出。 所以你们了解的话, 你比如看educator方案 它前面加了一个CPLD的板。 呃,多个, 多路那个I2S组成一路TDM, 再送给后面的它的一个ARM平台。 因为他们那种平台, 他们没考虑到这个, 他不是做各种音频用的, 所以它没考虑到这一点。 但这增加了它的系统的一个复杂度。 嗯,而且,而且这里插一个, 就是应该是, 在我看来是一个笑话吧。 就,呃,因为业界目前 它对这个音频, 这个语音识别的应用比较广, 比较关注。所以半导体厂商比较关注, 像Rockchip啊,像MTK啊,也都关注。 像MTK最近还出了一个芯片, 号称就是说针对这种应用的, 那针对这种应用呢有个特点呢, 它说它的那个 音频接口支持多路输入, 支持多路音频输入。 呃,通过TDM的格式。 这就有悖初衷了。 因为它最开始通过 CPLD转成TDM就按时隙嘛, 把很多路组成 一路,按时隙来插进来。 那是开始是 没办法的办法是这么做的, 而不是说你要把目前 而专门是故意做一个这样的 支持TDM的这么一个接口。 你应该做的是多个I2S, 多个独立的I2S就行了。 因为你做成一个TDM, 那你输进来的话, 你要把它各路的数据要解开, 啊,放开,要处理, 肯定要按单路来处理嘛。 那你一定要最起码 加一些memory搬运的这些时间。 对于整个系统来说,其实没有必要。 不是这么做的。 所以它没有对这个应用理解, 才做成这么一个怪怪的东西。 呃,我们因为, TI一直在音频这个应用上面 是TI的一个应用方向吧, 所以我们一直配合多路。 呃,I2S的支持是存在的。 那刚刚很多人问我 什么时候要用这个多路I2S, 呃,因为可能,因为 对音频不是那么了解嘛, 呃,问这个问题也很正常。 那打个比方,比如说5.1、 7.1以及像现在的那个Echo模式, 这种环绕。 5.1那就是要六个,接六个喇叭, 六个喇叭,就六个声道。 7.1那就是八个声道,八个喇叭。 以前AT模式是多了,14个喇叭, 因为它在顶上又加了四个喇叭。 造成HiFi的感觉, 如同环绕声效果。 那每一路其实它同时都有声音 输出去的 那从源头来说DSP这边处理 完送出去的每一路都是同时在送, 它同时在一个block上面,在一个 帧同步,在一个block里同时在送。 所以说需要很多路这个I2S线。 当然因为他们是做平板, 或者说是做等等之类的 这种应用的,机顶盒这种应用的话, 它只有左右声道,够啦。 不需要做这个环绕声, 所以说它通常只有一路I2S。 呃,这是一个前处理啊, 主要是前处理这一块。这个 语音识别这个系统这个数据流程, 就是麦克风进来, 进来之后呢beamforming, beamforming呢, 然后就找到,就主要是找出方向嘛。 你的声音是,哪个方向声音最强, 然后做一个选择,再找回 这个,找出是哪一路方向来的数据, 就选择那一路的数据。 然后做一个动态范围 压缩,或者说自动增益控制也好。 然后一开始做本地 识别呢,还是做交互频段识别? 呃,从TI来说呢,TI做到 DRC这一块,啊,做到DRC这一块。 这前面都做了。 还有AEC,但是TI的,但目前我们没有加进去 TI有类似的算法, 但是没有加进去。 没有去加。加了有的,看你怎么加。 有的是加到这里,再麦克风进来, 在做beamforming之前就要加AEC。 就是每一路上面我们 都把那个回声呢给消除掉。 这边效果是最好。 有的人呢,做法只晓得一侧, 他只做一次,就是说 往前做完beamforming之后, 我再给出那一步来做这个回声抵消, 抵消掉。这个效果呢, 双边双向的呢, 会想我们只能做一次; 而这个呢, 你有几个麦克风就做几次, 比如说八个就做八次。 看怎么去权衡这个 效果和运算能力的需求, 这边会有个权衡。 呃,TI做的, 就是TI做了很多TI规范, 就是内部做了一些参考设计, 方便客户去用好这么一个器件。 以一个,通过, 这是那个麦克风11板,麦克风板。 呃,做了一个 环形的环阵,8通道的环阵。 两个1864与C5517和K2G, 以及跟C6743啊, 我们跟三个板子配套的, 呃,做了板子跟我移植上去。 在C674x 而且加了一个跟我们的335x的 Beagleboard板做,以及YLink-8, 去访问云,访问亚马逊的云。 呃,Demo全部都,从Demo 的流程上面来看,我们都跑通了。 这是那个环形板的外观母板。 呃,这个,这种 麦克风板它其实是有讲究的啊。 其实是有讲究的。 因为,我们可能, 你以前对这个麦克风,呃, 多少的这个概念可能跟这个, 像我们这个麦克风阵列这种 应用的需求可能想象的不一样。 比如说我们四客的电话会议。 那上面是有几个 喇叭,有几个, 其实它是角上,每个 角上它都有个麦克风。 但是它那个麦克风呢, 首先不是说像这种通过 beamforming 的算法来加密隔离信号的, 而是说只是为了不同的方向能够, 从不同方向仅仅是 找一个,你是在哪边说话。 并没有说做一个增强,做个 beamforming来把这个增强。 而这个板呢可能,可以跟我们的 5517或者K2G, 以及C6747都可以相连。 我们为每个板子都做了一个Demo, 把Demo程序都跑上去了。 而且是在网上可以公开下载。 这是1864的一个接口,因为它是TI的 一个性能比较好的一个103dB SNR, 功耗也还可以。 这是四合一的一个ADC, 呃,如果你是选数字 麦克的话呢就不需要ADC啦, 那系统设计上面就相对简单很多, 没有电容电阻那些乱七八糟的东西。 就一块光盘都行。 就跟几个星阵一样。
呃,设计这个系统呢 就是说,你一个拷贝呢,
它因为麦克风阵列的话它其实,呃,
形式也很重要!
呃,是环形呢,还是说线性。
因为,你如果 你这个设备是挂在墙上的,
像电视机之类的, 空调是挂在墙上的,
你对着它,永远是一个...它 只是180度,不是一个环形的。
只有180度。所以说像 这种情况下通常是做一个线性的,
呃,麦克风阵列会好一些。
因为你做beamforming时 按一个方向去做那个能量汇聚
会好一些。
而你做一个, 如果是摆在桌子上的呢,
你有可能会从各个方向去跟它说话,
呃,那就是说做一个环阵。
比如说几加一, 6+1呀,这样呢,会好一些。
呃,就是要多少个麦克风,
这个阵列里边要多少个麦克风。
那其实呢,比如说你是环阵的话,
或者说是环阵的话,那取决于你希 望做几个方向的这个beamforming,
你希望把这个角度分得多细。
因为说白了, 那个环阵它其实就是,
比如说6+1或者7+1,
它就是中间一个呢 加上一条线上的那就是
这头是三个, 三个麦克风是在一个线上,
它以这样来区分方向。
它都识音, 它就是说,从不同的角度去找
这个是哪一个方向来的声音。
而在这个方向 之外的,它是做一个预测,
它把这个, 在这个方向做一个增强,
是这样来,呃, 就是说找到你的最佳的音。
其实它就是最终做 下来,呃,从一个系统层来说呢,
它会知道你这个说话是 在麦克风阵列的哪一个方向,
而不是说仅简单地去里面 随便选一个麦克风的声音。
哪怕你希望多远, 那它就越远的话,
它麦克风越多,会效果越好一些。
因为麦克风越多呢,一个是,
呃,它的角度越小嘛。 角度越小它的指向性就越强,
指向性就越强,定位就越准。
然后你希望识别 一些什么样的语音,
你是说只是命令啊,只是触发呢,
或者是只是命令呢, 或者说还要加上一个网络?
因为目前也有些产品,它做的 就是本地没有,唤醒都不在本地,
唤醒都是在云。其实 它就是一直在那监听你,
一直监听你,一直把 你材料的数据打包扔给云端,
云端识别回来给它,
发现不是关键字,所以它 就扔掉,又继续在那里循环。
最起码这样它可能做到低功耗,
因为它一直要在那边 工作,整个系统一直在工作。
呃,是否有,还有 一个,呃,这个音乐的回放。
如果有音乐的回放的话呢, 那你要,还要加那个回声抵消。
不然这个回声的音乐 就会送回到云端去了。
然后从供电的考虑, 就是说要选择那个低功耗的,
还是说对功耗无所谓的。
另外就看你是否 有网络了,你这个设备。
要有网络你可以选择, 没有网络的话那就不能选择。
另外还有一个成本的考虑。
因为,就像我前面 说的,其实什么都能做,
只要一个处理能力 差不多的,什么都能做。
如果你的算法写得够好, TI的C5000也是可以的。
因为TI的自己的 Demo就是做在C5000上。
当然了,TI它只是做Demo, 没有把产品上面的一些做进去。
但起码有一个比较,所以说 它的参数到底有多远,我不好说。
最起码它一套 预处理的算法全部跑下来了。
呃,所以说它也可以 选择比较便宜的一个处理器。
如果你要复杂, 加一些另外的功能进去呢,
那可能,也可能,也可以 选一些多核ARM啊这样的去做。
另外的一些考虑就是说 你是否要这个快速唤醒啊之类的。
还有你的大小啊,你是穿戴的,
还是说摆在桌子上的啊这种。
要是可穿戴的话可能要做小一点了。
另外看你其他的功能。因为 从它本身自己的规律处理来说呢,
它只是一个纯算法的东西, 不需要OS的一些功能的支持。
所以说你看其它的功能也有的需要,
是否要加些 这个高级操作系统进去,
加一些网络协议栈 这样的一些驱动进去。
如果是访问云呢, 它里面还要加一个云的压缩,
牵涉到HLOS啊, 有可能跟不同的云有关。
不同的云,你要去, 呃,它所要的格式你打包给它。
这是一个语音处理和音频,呃,
这个前端的一个例子。
从TI的角度来说 我们都有从模拟到数字,
电源那个呢,都有了。所以从,
我给大家推荐的 是我们的1864 ADC。
TI麦克风,模电麦克风。
然后把数据传给DSP,
DSP做一些回声抵消啊、
beamforming啊、 自适应滤波啊等等。
然后把这些处理好的音频数据
扔给控制器去做识别。
识别是专门的一个,另外一个范畴,
就是说算法,识别引擎。
有一个做audio跟voice的,
实现频率不一样嘛,另一个范畴。
因为通常都是应用里面,
Application,呃,有这种 需求,或者说audio的需求。
这个DSP拿到这个audio数据流呢,
然后做一些 后处理,来增强用户体验。
从这个图呢就是, 麦克风进来扔给DSP,
DSP呢,我们在 这个C674x或者DA8,
DA8和C674x呢其实,从芯 片的角度来说呢,它是一个东西。
一个东西,就是我们 的DA呢是我们的专门的一个
audio产品的part number。
它是我们那个 带杜比和DTS算法在这里面的。
如果有这种 做杜比或者DTS这种需求的,
呃,可以找TI。
其实这个系列在TI一直有,
从DA5到现在的DA10,一直都有。
就是做杜比啊这些东西的。 因为杜比和DTS它们是只跟
这种芯片厂家合作。
它把算法掩模在芯片的ROM里面,
然后它,要求你,
要求芯片厂家跟你的客户,
要契合它的这个杜比的License,
才允许卖芯片 给那个,给那个客户。
所以你是不,没有人说 我从杜比或者DTS拿一个Library,
我用到任意平台上,没有这个概念。
你比如随便拿个ARM, 找杜比,你给我个Library,
我给你钱。 然后我在自己ARM上来
实现杜比 DTS 这些解码功能,没有这种形式。
只有找专门的器件 这种做法啊。
它没有单独版的一个算法Library,
License里面才有这种做法。
只有有限的几家半导体厂商
它才能够合作把这个算法扔到,
出厂的时候也不在这个芯片里面。
那只是说前期的算法提供的方式。
但最后呢,你要做产品的时候,
或者说做完产品认证 的时候,你还要去找杜比做认证。
你把产品送给杜比, 杜比按它的流程测一遍,
过了之后才允许 你在产品上打上杜比的Logo。
不然的话,还不允许你打。
呃,所以前面也说啦,就说 也可以选择C5000或者C6000。
C5000呢,因为它 处理能力有限呢,通常
在我看来两麦克到四麦克,顶天了!
因为我最高只有200兆, 那就是一个16位的定点的DSP。
它的主要特点就是 低功耗、小封装,当然了成本也低。
当然了,在比如七、八年前 我们的C5000还是算是业界
处理能力很强的一个DSP。这个发展很快
现在C6000呢, 当然我们的TI的DSP
在业界一直以来 就是说以高性能著称。
我们有单核到N个核的。
后来都是C6000系列。 C6000和C5000它是完全不兼容。
指令集也不一样啊,等等 什么都不一样。库互相不能用。
就是指令集不一样。
这一个呢,呃, 是一个低功耗的浮点的DSP。
定浮点兼容。 不是说只有浮点,没有定点啊,
没有这个概念。 这个最高主频456够了。
那目前评估下来,一般做,
呃,6+1或者说7+1麦克,都没问题。
七个、八个麦克 都够,呃,它是够的。
而且它的接口很丰富。
在这个应用里边主要是I2S接口,
因为你音频输进来是I2S接口的。
通常的处理器 大家可以 去听一下,去看一下,
它没那么多I2S。 还有可能就一个输入,一个输出。
所以你们了解的话, 你比如看educator方案
它前面加了一个CPLD的板。
呃,多个, 多路那个I2S组成一路TDM,
再送给后面的它的一个ARM平台。
因为他们那种平台, 他们没考虑到这个,
他不是做各种音频用的, 所以它没考虑到这一点。
但这增加了它的系统的一个复杂度。
嗯,而且,而且这里插一个,
就是应该是, 在我看来是一个笑话吧。
就,呃,因为业界目前
它对这个音频, 这个语音识别的应用比较广,
比较关注。所以半导体厂商比较关注,
像Rockchip啊,像MTK啊,也都关注。
像MTK最近还出了一个芯片, 号称就是说针对这种应用的,
那针对这种应用呢有个特点呢,
它说它的那个 音频接口支持多路输入,
支持多路音频输入。 呃,通过TDM的格式。
这就有悖初衷了。
因为它最开始通过 CPLD转成TDM就按时隙嘛,
把很多路组成 一路,按时隙来插进来。
那是开始是 没办法的办法是这么做的,
而不是说你要把目前
而专门是故意做一个这样的
支持TDM的这么一个接口。
你应该做的是多个I2S, 多个独立的I2S就行了。
因为你做成一个TDM,
那你输进来的话, 你要把它各路的数据要解开,
啊,放开,要处理, 肯定要按单路来处理嘛。
那你一定要最起码 加一些memory搬运的这些时间。
对于整个系统来说,其实没有必要。
不是这么做的。 所以它没有对这个应用理解,
才做成这么一个怪怪的东西。
呃,我们因为, TI一直在音频这个应用上面
是TI的一个应用方向吧, 所以我们一直配合多路。
呃,I2S的支持是存在的。
那刚刚很多人问我 什么时候要用这个多路I2S,
呃,因为可能,因为 对音频不是那么了解嘛,
呃,问这个问题也很正常。
那打个比方,比如说5.1、 7.1以及像现在的那个Echo模式,
这种环绕。 5.1那就是要六个,接六个喇叭,
六个喇叭,就六个声道。
7.1那就是八个声道,八个喇叭。 以前AT模式是多了,14个喇叭,
因为它在顶上又加了四个喇叭。
造成HiFi的感觉, 如同环绕声效果。
那每一路其实它同时都有声音 输出去的
那从源头来说DSP这边处理 完送出去的每一路都是同时在送,
它同时在一个block上面,在一个 帧同步,在一个block里同时在送。
所以说需要很多路这个I2S线。
当然因为他们是做平板,
或者说是做等等之类的 这种应用的,机顶盒这种应用的话,
它只有左右声道,够啦。
不需要做这个环绕声, 所以说它通常只有一路I2S。
呃,这是一个前处理啊,
主要是前处理这一块。这个 语音识别这个系统这个数据流程,
就是麦克风进来, 进来之后呢beamforming,
beamforming呢, 然后就找到,就主要是找出方向嘛。
你的声音是,哪个方向声音最强,
然后做一个选择,再找回 这个,找出是哪一路方向来的数据,
就选择那一路的数据。 然后做一个动态范围
压缩,或者说自动增益控制也好。
然后一开始做本地 识别呢,还是做交互频段识别?
呃,从TI来说呢,TI做到 DRC这一块,啊,做到DRC这一块。
这前面都做了。
还有AEC,但是TI的,但目前我们没有加进去 TI有类似的算法,
但是没有加进去。
没有去加。加了有的,看你怎么加。
有的是加到这里,再麦克风进来,
在做beamforming之前就要加AEC。
就是每一路上面我们 都把那个回声呢给消除掉。
这边效果是最好。 有的人呢,做法只晓得一侧,
他只做一次,就是说 往前做完beamforming之后,
我再给出那一步来做这个回声抵消,
抵消掉。这个效果呢,
双边双向的呢, 会想我们只能做一次;
而这个呢, 你有几个麦克风就做几次,
比如说八个就做八次。
看怎么去权衡这个 效果和运算能力的需求,
这边会有个权衡。
呃,TI做的, 就是TI做了很多TI规范,
就是内部做了一些参考设计, 方便客户去用好这么一个器件。
以一个,通过, 这是那个麦克风11板,麦克风板。
呃,做了一个 环形的环阵,8通道的环阵。
两个1864与C5517和K2G,
以及跟C6743啊,
我们跟三个板子配套的, 呃,做了板子跟我移植上去。
在C674x
而且加了一个跟我们的335x的
Beagleboard板做,以及YLink-8,
去访问云,访问亚马逊的云。
呃,Demo全部都,从Demo 的流程上面来看,我们都跑通了。
这是那个环形板的外观母板。
呃,这个,这种 麦克风板它其实是有讲究的啊。
其实是有讲究的。 因为,我们可能,
你以前对这个麦克风,呃,
多少的这个概念可能跟这个,
像我们这个麦克风阵列这种 应用的需求可能想象的不一样。
比如说我们四客的电话会议。
那上面是有几个 喇叭,有几个,
其实它是角上,每个 角上它都有个麦克风。
但是它那个麦克风呢, 首先不是说像这种通过
beamforming 的算法来加密隔离信号的,
而是说只是为了不同的方向能够,
从不同方向仅仅是 找一个,你是在哪边说话。
并没有说做一个增强,做个 beamforming来把这个增强。
而这个板呢可能,可以跟我们的
5517或者K2G, 以及C6747都可以相连。
我们为每个板子都做了一个Demo,
把Demo程序都跑上去了。
而且是在网上可以公开下载。
这是1864的一个接口,因为它是TI的 一个性能比较好的一个103dB SNR,
功耗也还可以。
这是四合一的一个ADC,
呃,如果你是选数字 麦克的话呢就不需要ADC啦,
那系统设计上面就相对简单很多,
没有电容电阻那些乱七八糟的东西。
就一块光盘都行。 就跟几个星阵一样。
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
基于C55xx C674x 和 PCM1864 语音识别 前端语音处理解决方案(2)
所属课程:TI EP day 研讨会课程
发布时间:2017.12.06
视频集数:26
本节视频时长:00:19:05
TI EP day 研讨会课程合辑。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>