3
  • 声卡每次抓到一个语音的DTMD数字怎么听?

目标是无线电控制我的电脑和接口活动通过手持收发器拨打 dtmf 音调。

我使用 multimon 来听到 DTMF 音,我尝试使用 awk 过滤数字并进行相应处理。例如,如果我从无线电中键入“0”,系统必须重新启动等,但首先要确认操作。“计算机将重新启动,发送 # 确认”...

我尝试使用 espeak 对远程收音机进行语音确认。连接到 pc 声卡的无线电接收命令并传输响应。

我不只是知道如何在 espeak 中的 awk 中嵌套 multimon。

Multimon 本身不允许我对它的标准输出做任何事情,因为它正在运行(在听到数字后不要终止,这确实是正确的)。

如果我知道如何只说出每个数字而不退出自然的 multimon 循环,那将非常有帮助。

说,multimon -a DTMF | awk'{print}' espeak -stdin 如果这行得通!

有可能吗?任何帮助欢迎。

3年过去了,linux DTMF解码仍然没有进步。

一旦我在 Linux 中没有看到任何 DTMF Radio Controlling 项目,我打算发布这个我可以解决这个问题。

谢谢/马里奥/巴西圣保罗

4

3 回答 3

2

我相信我的回答已经过时了,也许您已经找到了解决方法。

我遇到了同样的问题,并发现问题出在 multimon 中。当您将标准输出从 multimon 传送到另一个程序时,multimon 不会正确刷新详细输出。

尝试修补并重新编译 multimon,添加“fflush(stdout);”,如下所示:

(unixinput.c,第 71 行附近)

    void verbprintf(int verb_level, const char *fmt, ...)
    {
            va_list args;

            va_start(args, fmt);
            if (verb_level <= verbose_level) {
                    vfprintf(stdout, fmt, args);



                    fflush(stdout); //ADD THIS LINE!!!!!!!!!!!!!!!



                    }
            va_end(args);
    }

此致,

-爱德华多

于 2010-12-21T17:24:04.010 回答
0

您可以使用该system()功能espeak从您的awk脚本启动。

于 2010-02-04T04:27:57.347 回答
0

@OP,我不清楚您的问题,但是看到 system() 对您感兴趣,这就是您在 awk 中调用外部命令的方式

multimon -a DTMF | awk '{
  cmd="espeak "$0 #$0 comes from the multimon output
  system(cmd)
}
'
于 2010-02-04T04:48:51.627 回答