我有这个usb-to-gsm serial serial-gprs-sim800c模块,我已经成功地将命令发送给它并做事,但是我真正想要的是文字到语音的文字功能,我能够生成一个AMR音频文件,将其上传到模块的内部内存,并在某人调用时播放。
但是,呼叫者听到的消息将是动态的,而tts将实时运行,因此音频文件的上传过程将导致不良的延迟,我有什么办法可以通过模块传输一些音频?<<<<
谢谢。
这是我要做的。
- 开始通话(
ATDxxxxxxxxxxx;
( - 设置模式(
AT+DTAM=2
( - 开始录制(
AT+CREC=1,1,0
( - 说我想播放到麦克风5.停机录制(
AT+CREC=2
( - 挂断(
ATH
(
现在,我可以使用以下
播放我录制的内容- 开始通话(
ATDxxxxxxxxxxx;
( - 设置模式(
AT+DTAM=2
( - 开始播放(
AT+CREC=4,1,0,80
( - 挂断(
ATH
(
不知道如何动态执行此操作,甚至上传 *.amr文件。
如果您可以分享过去是否有任何改进的命令,将非常感谢。
回答@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); });
});