音频上传问题

Wi-Fi 设备、蜂窝设备、WuKongAI、开发板、TuyaOS 移植等


13160058813
Posts: 104

基于3.12.14版本的SDK,希望实现一个不经过mic处理,直接把已经录好的音频传到云服务的功能。
这个功能如何实现?
麻烦提供下思路。比如:通过ty_ai_proc_event_send把音频数据输入进去,或者直接通过mic把数据copy进去等等
谢谢。


Tags:
愚者千虑必有一得
Posts: 787

Re: 音频上传问题

可以试试这个接口:

Code: Select all

ty_ai_proc_event_send(s_ai_toy->llm, AI_PROC_INTERRUPT_EVENT, NULL, 0);	// 打断老的event
ty_ai_proc_event_send(s_ai_toy->llm, AI_PROC_ADUIO_EVENT, data, data_len);	// 开启一个新的音频event,data是音频数据,data_len是音频数据长度
ty_ai_proc_event_send(s_ai_toy->llm, AI_PROC_FINSH_EVENT, NULL, 0);	// 结束event
13160058813
Posts: 104

Re: 音频上传问题

也想用这个接口,那ai的状态是不是得设置下呀

愚者千虑必有一得
Posts: 787

Re: 音频上传问题

在发送之前,设置成:
ai_toy_state_update(s_ai_toy, AI_TOY_UPLOAD);
发送失败,设置成:
ai_toy_state_update(s_ai_toy, AI_TOY_IDLE);

13160058813
Posts: 104

Re: 音频上传问题

我做了如下操作:
TAL_PR_DEBUG("[%s %d]----------------------upload",func, LINE);
ty_ai_proc_event_send(s_ai_toy->llm, AI_PROC_INTERRUPT_EVENT, NULL, 0);
ai_toy_state_update(s_ai_toy, AI_TOY_UPLOAD);
rt = ty_ai_proc_event_send(s_ai_toy->llm, AI_PROC_AUDIO_EVENT, media_src_network_conn_success_zh, sizeof(media_src_network_conn_success_zh));
rt |= ty_ai_proc_event_send(s_ai_toy->llm, AI_PROC_FINSH_EVENT, NULL, 0);
if (OPRT_OK != rt) {
TAL_PR_DEBUG("[%s %d]----------------------upload failed",func, LINE);
ai_toy_state_update(s_ai_toy, AI_TOY_IDLE);
if (rt == OPRT_NETWORK_ERROR) {
ty_ai_toy_alert(TOY_ALERT_TYPE_NETWORK_DISCONNECT, TRUE);
}
}
TAL_PR_DEBUG("[%s %d]----------------------upload end",func, LINE);

但是没有收到云端的回复,看了下log,收到的回复是空的

Attachments
上传音频log.txt
(5.42 KiB) Downloaded 33 times
愚者千虑必有一得
Posts: 787

Re: 音频上传问题

你的音频是啥格式?云端可能没识别出来。目前上传支持的格式是这样的。如果你开了opus编码就是opus,否则就是pcm。

Code: Select all

#if defined(ENABLE_APP_OPUS_ENCODER) && (ENABLE_APP_OPUS_ENCODER == 1)
        TY_AI_CHAT_UPLOAD_PARA_T upload_para = {
            .encoder = &g_tuya_ai_encoder_opus_ipc,
            .info = {
                .encode_type = AUDIO_CODEC_OPUS,
                .sample_rate = 16000,
                .channels = AUDIO_CHANNELS_MONO,
                .bits_per_sample = 16,
            },
            .tts_cfg = {
                .tts_overwrite = 1,
                .bit_rate = 64000, // 64kbps
                .sample_rate = 16000,
                .format = "mp3",
            },
        };
#else
        TY_AI_CHAT_UPLOAD_PARA_T upload_para = {
            .encoder = NULL,
            .info = {
                .encode_type = AUDIO_CODEC_PCM,
                .sample_rate = 16000,
                .channels = AUDIO_CHANNELS_MONO,
                .bits_per_sample = 16,
            },
            .tts_cfg = {
                .tts_overwrite = 1,
                .bit_rate = 64000, // 64kbps
                .sample_rate = 16000,
                .format = "mp3",
            },
        };
#endif
13160058813
Posts: 104

Re: 音频上传问题

alert里面不是有好几个预警的语音?那些不可以?我找下这种格式的文件

13160058813
Posts: 104

Re: 音频上传问题

我找了个opus格式的文件,按照上面要求做的音频,云也没有回应,附件是log

Attachments
opus.txt
(52.48 KiB) Downloaded 2 times
User avatar
卢台长
Posts: 60
Location: 法外

Re: 音频上传问题

你好,请直接上传PCM文件里的数据,(提示音是mp3文件,opus是内部自动会根据pcm进行编码的)
pcm文件请自行找下,通过工具转成C数组或者通过文件

13160058813
Posts: 104

Re: 音频上传问题

ENABLE_APP_OPUS_ENCODER这个宏是打开的,我找的opus的文件,通过工具转成了类似alert里面的代码,然后上传到云。
这样不行?

另:按照你的意思是我找pcm的文件,把这个宏ENABLE_APP_OPUS_ENCODER关闭,尝试它?

Post Reply