使用Prosody Speech API检测静音

时间:2016-08-03 11:23:18

标签: java audio jna

我正在使用Aculab的Prosody音频卡来记录某个频道的声音。我现在想要在频道为“静音”的情况下触发警报。 24小时。任何人都有使用Prosody Speech Processing API实现此功能的经验吗?我在Java中实现它,使用JNA进行本机调用。

1 个答案:

答案 0 :(得分:0)

我无法帮助它的Java部分,但我假设每个人的Aculab API大致相同,所以:

这有两种选择。如果您正在录制频道并且正在使用Aculab高级录制API,则会出现“最大静音”的参数,如果频道长时间静音,将导致录制停止。我自己从未用过超过几秒钟的时间,但是:

http://www.aculab.com/support/pdf_documents/v6_linux/TiNG/pubdoc/gen/apifn-sm_record_start.html#field-max_silence

正如您在该网页上看到的,这需要Prosody固件模块“grunt”,可以使用sm_listen_for更直接地使用它。如果你正在听DTMF,你很可能已经使用了这个,你会看到这个函数也有“gruint detection”的参数,见这里:

http://www.aculab.com/support/pdf_documents/v6_linux/TiNG/pubdoc/gen/apifn-sm_listen_for.html

如果启用了grunt检测,将会发出一个检测(很像DTMF检测),说有声音。我在我的系统上使用它来跟踪会议中哪个人在任何特定时间都是通话,并且它运行良好。在你的情况下,你只想编写代码以查看长时间内是否没有“grunt”(线路上的噪声),所以只需跟踪上次获得其中一个信号的时间。