GSM SIM800C文本到语音音频流

时间:2019-07-05 20:56:51

标签: text-to-speech audio-streaming gsm sim800

我有this USB-to-GSM Serial-GPRS-SIM800C module,并且已经能够成功向其发送AT命令并执行操作,但是我真正想要的是文本到语音功能,我能够生成AMR音频文件,并将其上传到模块的内存,并在有人调用时播放它,

但是呼叫者听到的消息将是动态的,并且TTS将实时运行,因此音频文件向模块的上载过程将导致不希望的延迟,请问有什么方法可以使音频流通过模块吗? / p>

谢谢。

2 个答案:

答案 0 :(得分:0)

这就是我必须要做的。

  1. 开始通话(ATDxxxxxxxxxxx;)
  2. 设置模式(AT + DTAM = 2)
  3. 开始录制(AT + CREC = 1,1,0)
  4. 说出我想在麦克风中播放的内容 5.停止录制(AT + CREC = 2)
  5. 挂断电话(ATH)

现在我可以播放使用以下内容录制的内容

  1. 开始通话(ATDxxxxxxxxxxx;)
  2. 设置模式(AT + DTAM = 2)
  3. 开始播放(AT + CREC = 4、1,0、80)
  4. 挂断电话(ATH)

不知道如何动态执行此操作,甚至不上传* .amr文件。

如果您能分享以前使用的命令来查看是否有任何改进的方法,将不胜感激。

答案 1 :(得分:0)

回答@anothersanj

我使用 serialport-gsm 使事情变得更简单。 这就是我的做法:

modem.executeCommand('AT+FSMKDIR=C:\\status\\',(result) => { log.debug(result); });
        //reading the audio file from your computer with nodejs fs module
        fs.readFile('tts2.amr', function(err, amr_data) {
            if(!err) {
                let fsize= fs.statSync('tts2.amr').size;
                log.debug(fsize);
                //creating the file on the GSM module's memory
                modem.executeCommand('AT+FSCREATE=C:\\stats\\tts2.amr',(result) => { log.debug(result); });
                //writing the file on the GSM module's memory
                modem.executeCommand('AT+FSWRITE=C:\\stats\\tts2.amr,0,'+fsize+',100',(result) => { 
                    modem.port.write(amr_data);
                });
                //Display file list on specified path (like ls command)
                modem.executeCommand('AT+FSLS=C:\\stats',(result) => { log.debug(result); });
                
            }
        }); 

当有人打电话给你时播放文件:

//playing the file on incoming call
        modem.on('onNewIncomingCall', (result) => { 
            log.debug(result); 
            modem.executeCommand('ATA',(result) => { log.debug(result); });
            modem.executeCommand('AT+CMEDPLAY=1,\"C:\\stats\\tts2.amr\",0,100',(result) => { log.debug(result); });
            modem.executeCommand('AT+DDET=1',(result) => { log.debug(result); });

        });