Z-yq / TensorflowASR

一个执着于让CPU\端侧-Model逼近GPU-Model性能的项目,CPU上的实时率(RTF)小于0.1
Apache License 2.0
461 stars 111 forks source link

How to streaming? #11

Closed phecda-xu closed 4 years ago

phecda-xu commented 4 years ago

你好: 关于流式处理,请问 我看到现在的测试推理都是直接把整个音频输入模型,好像并不是流式处理。 那么ComformerTransducer 或者 DeepSpeech2Transducer 要怎么实现流式的识别?

谢谢!

Z-yq commented 4 years ago

这是一个工程问题了。 具体的流式设计要根据实际的工程条件来定。 可以堆积送入的音频再过声学模型和语言模型。 也可以堆积声学识别的结果,最后经过语言模型。

------------------ 原始邮件 ------------------ 发件人: "Z-yq/TensorflowASR" <notifications@github.com>; 发送时间: 2020年10月28日(星期三) 下午5:20 收件人: "Z-yq/TensorflowASR"<TensorflowASR@noreply.github.com>; 抄送: "Subscribed"<subscribed@noreply.github.com>; 主题: [Z-yq/TensorflowASR] How to steaming? (#11)

你好: 关于流式处理,请问 我看到现在的测试推理都是直接把整个音频输入模型,好像并不是流式处理。 那么ComformerTransducer 或者 DeepSpeech2Transducer 要怎么实现流式的识别?

谢谢!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

phecda-xu commented 4 years ago

这是一个工程问题了。 具体的流式设计要根据实际的工程条件来定。 可以堆积送入的音频再过声学模型和语言模型。 也可以堆积声学识别的结果,最后经过语言模型。 ------------------ 原始邮件 ------------------ 发件人: "Z-yq/TensorflowASR" <notifications@github.com>; 发送时间: 2020年10月28日(星期三) 下午5:20 收件人: "Z-yq/TensorflowASR"<TensorflowASR@noreply.github.com>; 抄送: "Subscribed"<subscribed@noreply.github.com>; 主题: [Z-yq/TensorflowASR] How to steaming? (#11) 你好: 关于流式处理,请问 我看到现在的测试推理都是直接把整个音频输入模型,好像并不是流式处理。 那么ComformerTransducer 或者 DeepSpeech2Transducer 要怎么实现流式的识别? 谢谢! — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

先忽略语言模型,Transducer类声学模型的基本的逻辑,是不是这样:

开始,取N帧数据,由encoder进行计算输出 一帧的特征 encpred_net输入labelS,表示开始,输出 pred,然后将【enc, pred】输入joint_net输出预测的label,用这个预测的label本次的输入label一起作为下一次pred_net的输入;

然后滑窗,再取N帧数据,重复上述步骤,当输出label/S时,将pred_net的输入重新设置为S,表示一句话说完,开始下一句话的预测。

关于encoder,一种形式是重新设计网络,用RNN类的或者TDNN类的网络,N帧音频数据预测一个标签(N>=1),没有堆叠音频,算力足够的话,等待时间可以很短;另外一种是先堆叠音频,encoder计算后进行拆分,然后一步一步的预测,堆叠的音频长度需要根据encoder网络来设计,并且每次堆叠的音频与前一次堆叠的音频有一定的重合部分,以保证不影响识别的结果,堆叠音频时需要等待,因此时间可能比较长;

这是我的思考,不知道是否正确。

Z-yq commented 4 years ago

个人认为所谓的流式识别,就是对encoder和decoder于不同应用场景的应用而已。

做法没有标准答案,只要方案能满足需求就是OK的。