我有this USB-to-GSM Serial-GPRS-SIM800C module,并且已经能够成功向其发送AT命令并执行操作,但是我真正想要的是文本到语音功能,我能够生成AMR音频文件,并将其上传到模块的内存,并在有人调用时播放它,
但是呼叫者听到的消息将是动态的,并且TTS将实时运行,因此音频文件向模块的上载过程将导致不希望的延迟,请问有什么方法可以使音频流通过模块吗? / p>
谢谢。
答案 0 :(得分:0)
这就是我必须要做的。
现在我可以播放使用以下内容录制的内容
不知道如何动态执行此操作,甚至不上传* .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); });
});