正在显示
8 个修改的文件
包含
126 行增加
和
32 行删除
@@ -290,6 +290,7 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | @@ -290,6 +290,7 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | ||
290 | memcpy(str, sendbuf, 12); | 290 | memcpy(str, sendbuf, 12); |
291 | *str_len = 12; | 291 | *str_len = 12; |
292 | } | 292 | } |
293 | + break; | ||
293 | 294 | ||
294 | case JZ_INSCODE_5BFRAME_FILE_DECODE_DEFEAT: | 295 | case JZ_INSCODE_5BFRAME_FILE_DECODE_DEFEAT: |
295 | { | 296 | { |
@@ -297,6 +298,7 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | @@ -297,6 +298,7 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | ||
297 | memcpy(str, sendbuf, 12); | 298 | memcpy(str, sendbuf, 12); |
298 | *str_len = 12; | 299 | *str_len = 12; |
299 | } | 300 | } |
301 | + break; | ||
300 | 302 | ||
301 | case JZ_INSCODE_5BFRAME_DEFEAT: | 303 | case JZ_INSCODE_5BFRAME_DEFEAT: |
302 | { | 304 | { |
@@ -389,15 +391,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | @@ -389,15 +391,15 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | ||
389 | } | 391 | } |
390 | break; | 392 | break; |
391 | 393 | ||
392 | - case JZ_INSCODE_5BFRAME_MUSICLIST_STOP: | 394 | + case JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE: |
393 | { | 395 | { |
394 | - char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0xff, 0x00, 0x00, 0x23}; | ||
395 | - memcpy(str, sendbuf, 12); | ||
396 | - *str_len = 12; | 396 | + char sendbuf[14] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x01, 0x00, 0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0x23}; |
397 | + memcpy(str, sendbuf, 14); | ||
398 | + *str_len = 14; | ||
397 | } | 399 | } |
398 | break; | 400 | break; |
399 | 401 | ||
400 | - case JZ_INSCODE_5BFRAME_CHECKSTATUS_AUDIO_DETAIL_MESSAGE: | 402 | + case JZ_INSCODE_5BFRAME_MUSICLIST_STOP: |
401 | { | 403 | { |
402 | char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0xff, 0x00, 0x00, 0x23}; | 404 | char sendbuf[12] = { 0x5b, 0x5b, 0x77, 0x00, 0x0c, 0x00, 0x00, 0x58, 0xff, 0x00, 0x00, 0x23}; |
403 | memcpy(str, sendbuf, 12); | 405 | memcpy(str, sendbuf, 12); |
@@ -405,6 +407,8 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | @@ -405,6 +407,8 @@ int JZsdk_GetFrameTemplate(int InsCode ,char *str, int *str_len) | ||
405 | } | 407 | } |
406 | break; | 408 | break; |
407 | 409 | ||
410 | + break; | ||
411 | + | ||
408 | case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS: | 412 | case JZ_INSCODE_5BFRAME_OPUS_DECODE_STATUS: |
409 | { | 413 | { |
410 | char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x59, 0xf2, 0x00, 0x00, 0x00, 0x23}; | 414 | char sendbuf[13] = { 0x5b, 0x5b, 0x77, 0x00, 0x0D, 0x00, 0x00, 0x59, 0xf2, 0x00, 0x00, 0x00, 0x23}; |
@@ -50,16 +50,16 @@ static T_JZsdkReturnCode JZsdk_Check_Src32(unsigned char *DIR, unsigned char *ch | @@ -50,16 +50,16 @@ static T_JZsdkReturnCode JZsdk_Check_Src32(unsigned char *DIR, unsigned char *ch | ||
50 | 50 | ||
51 | //3、校验 | 51 | //3、校验 |
52 | //将unsigned char的码值转换成U32_t | 52 | //将unsigned char的码值转换成U32_t |
53 | - U32_t CheckSum = 0; | ||
54 | - memcpy(&CheckSum, checksum, checksum_len); | ||
55 | - if (CheckSum != LocalCheckSum) | 53 | + U32_t SRC_CheckSum = checksum[0] << 24 | checksum[1] << 16 | checksum[2] << 8 | checksum[3]; |
54 | + | ||
55 | + if (SRC_CheckSum != LocalCheckSum) | ||
56 | { | 56 | { |
57 | - JZSDK_LOG_ERROR("checksum error\n"); | 57 | + JZSDK_LOG_ERROR("checksum error local:%x src:%x", LocalCheckSum, SRC_CheckSum); |
58 | ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 58 | ret = JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; |
59 | } | 59 | } |
60 | else | 60 | else |
61 | { | 61 | { |
62 | - JZSDK_LOG_INFO("checksum success\n"); | 62 | + JZSDK_LOG_INFO("checksum success local:%x src:%x", LocalCheckSum, SRC_CheckSum); |
63 | ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 63 | ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
64 | } | 64 | } |
65 | 65 |
@@ -349,7 +349,7 @@ int Main_APP_Uart() | @@ -349,7 +349,7 @@ int Main_APP_Uart() | ||
349 | //lib库初始化 | 349 | //lib库初始化 |
350 | JZsdk_LibInit(); | 350 | JZsdk_LibInit(); |
351 | 351 | ||
352 | - JZSDK_LOG_INFO("%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION); | 352 | + JZSDK_LOG_INFO("0x%x,UartVersion%x.%x.%x.%x\n",DEVICE_VERSION,MAJOR_VERSION, MINOR_VERSION, MODIFY_VERSION, DEBUG_VERSION); |
353 | 353 | ||
354 | //引脚初始化 | 354 | //引脚初始化 |
355 | Ircut_Init(); | 355 | Ircut_Init(); |
@@ -707,7 +707,7 @@ static void *Main_WorkModeTask(void *arg) | @@ -707,7 +707,7 @@ static void *Main_WorkModeTask(void *arg) | ||
707 | exit(0); | 707 | exit(0); |
708 | } | 708 | } |
709 | #elif APP_VERSION == APP_PSDK | 709 | #elif APP_VERSION == APP_PSDK |
710 | - | 710 | + JZSDK_LOG_INFO("选择开始psdk播报"); |
711 | #endif | 711 | #endif |
712 | 712 | ||
713 | #if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON | 713 | #if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON |
@@ -611,7 +611,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch | @@ -611,7 +611,6 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch | ||
611 | if (CodeLenth != 0) | 611 | if (CodeLenth != 0) |
612 | { | 612 | { |
613 | memcpy(checkCode, &getbuf[10], CodeLenth); | 613 | memcpy(checkCode, &getbuf[10], CodeLenth); |
614 | - JZSDK_LOG_INFO("checkCode :%s", checkCode); | ||
615 | } | 614 | } |
616 | else | 615 | else |
617 | { | 616 | { |
@@ -625,10 +624,12 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch | @@ -625,10 +624,12 @@ static T_JZsdkReturnCode RecvDeal_SaveAudioFileTrans_stop_and_check(int Port, ch | ||
625 | if (getbuf[9] == 0) | 624 | if (getbuf[9] == 0) |
626 | { | 625 | { |
627 | checkType = JZSDK_CHECK_SUM_TYPE_MD5; | 626 | checkType = JZSDK_CHECK_SUM_TYPE_MD5; |
627 | + JZSDK_LOG_INFO("checkCode :%s", checkCode); | ||
628 | } | 628 | } |
629 | else if (getbuf[9] == 1) | 629 | else if (getbuf[9] == 1) |
630 | { | 630 | { |
631 | checkType = JZSDK_CHECK_SUM_TYPE_SRC32; | 631 | checkType = JZSDK_CHECK_SUM_TYPE_SRC32; |
632 | + JZSDK_LOG_INFO("checkCode :%x", checkCode); | ||
632 | } | 633 | } |
633 | else | 634 | else |
634 | { | 635 | { |
@@ -909,8 +910,10 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_AudioDetailMessage(int Port, char | @@ -909,8 +910,10 @@ static T_JZsdkReturnCode RecvDeal_CheckStatus_AudioDetailMessage(int Port, char | ||
909 | //4、解析音频名字 | 910 | //4、解析音频名字 |
910 | char AudioName[128]; | 911 | char AudioName[128]; |
911 | int AudioNameLength = 0; | 912 | int AudioNameLength = 0; |
912 | - AudioNameLength = frameLenth - 9 - 2; | ||
913 | - memcpy(AudioName, getbuf + 9, AudioNameLength); | 913 | + AudioNameLength = frameLenth - 11 - 2; |
914 | + memcpy(AudioName, getbuf + 11, AudioNameLength); | ||
915 | + | ||
916 | + JZSDK_LOG_INFO("解析%s",AudioName); | ||
914 | 917 | ||
915 | #if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON | 918 | #if MEGAPHONE_CONFIG_STATUS == VERSION_SWITCH_ON |
916 | 919 |
@@ -425,7 +425,7 @@ T_JZsdkReturnCode JZsdk_Uart_SentDeal_Reply_Musiclist(int UartPort ,int FrameSeq | @@ -425,7 +425,7 @@ T_JZsdkReturnCode JZsdk_Uart_SentDeal_Reply_Musiclist(int UartPort ,int FrameSeq | ||
425 | //发送音频详细信息帧 | 425 | //发送音频详细信息帧 |
426 | T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioDetailMessage(int Uartport, int FrameSequence, unsigned char type ,unsigned char *data, unsigned int datalen) | 426 | T_JZsdkReturnCode JZsdk_Uart_SendDeal_Send_AudioDetailMessage(int Uartport, int FrameSequence, unsigned char type ,unsigned char *data, unsigned int datalen) |
427 | { | 427 | { |
428 | - printf("发送播放状态结束帧\n"); | 428 | + printf("发送音频详细信息帧\n"); |
429 | unsigned char sendbuf[256]; | 429 | unsigned char sendbuf[256]; |
430 | int send_buf_len; | 430 | int send_buf_len; |
431 | 431 |
@@ -5,16 +5,86 @@ | @@ -5,16 +5,86 @@ | ||
5 | 5 | ||
6 | #include "JZsdkLib.h" | 6 | #include "JZsdkLib.h" |
7 | 7 | ||
8 | -T_JZsdkReturnCode PcmNoiseReduction(unsigned char *data, int len, int threshold) | ||
9 | -{ | ||
10 | - for (int i = 0; i < len; i++) | ||
11 | - { | ||
12 | - if (abs(data) >= 0xFF) | ||
13 | - { | ||
14 | - data[i] = 0; | 8 | +// T_JZsdkReturnCode PcmNoiseReduction(unsigned char *data, int len, int threshold) |
9 | +// { | ||
10 | +// for (int i = 0; i < len; i++) | ||
11 | +// { | ||
12 | +// if (abs(data) >= 0xFF) | ||
13 | +// { | ||
14 | +// data[i] = 0; | ||
15 | +// } | ||
16 | +// } | ||
17 | + | ||
18 | + | ||
19 | +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
20 | +// } | ||
21 | + | ||
22 | + | ||
23 | +#define NOISE_THRESHOLD 0.05 // 降噪阈值 | ||
24 | + | ||
25 | +T_JZsdkReturnCode reduce_noise(float* samples, int num_samples) { | ||
26 | + for (int i = 0; i < num_samples; i++) { | ||
27 | + if (fabs(samples[i]) < NOISE_THRESHOLD) { | ||
28 | + samples[i] = 0.0f; // 如果样本小于阈值,则将其置为零 | ||
29 | + } | ||
15 | } | 30 | } |
31 | +} | ||
32 | + | ||
33 | +T_JZsdkReturnCode PcmNoiseReduction(short *data, int len) | ||
34 | +{ | ||
35 | + float float_buffer[len]; | ||
36 | + | ||
37 | + // 转换为浮点数并进行降噪 | ||
38 | + for (size_t i = 0; i < len; i++) { | ||
39 | + float_buffer[i] = data[i] / 32768.0f; // 从16-bit转换到 [-1.0, 1.0] | ||
16 | } | 40 | } |
17 | 41 | ||
42 | + reduce_noise(float_buffer, len); | ||
43 | + | ||
44 | + // 转换回16-bit并写入输出文件 | ||
45 | + for (size_t i = 0; i < len; i++) | ||
46 | + { | ||
47 | + data[i] = (short)(float_buffer[i] * 32767.0f); // 溢出处理 | ||
48 | + } | ||
18 | 49 | ||
19 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | 50 | return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; |
20 | } | 51 | } |
52 | + | ||
53 | +// #define NOISE_THRESHOLD 0.05 // 降噪阈值 | ||
54 | + | ||
55 | +// // 字节交换函数 | ||
56 | +// short swap_endian(short val) { | ||
57 | +// return (val >> 8) | (val << 8); | ||
58 | +// } | ||
59 | + | ||
60 | +// T_JZsdkReturnCode reduce_noise(float* samples, int num_samples) { | ||
61 | +// for (int i = 0; i < num_samples; i++) { | ||
62 | +// if (fabs(samples[i]) < NOISE_THRESHOLD) { | ||
63 | +// samples[i] = 0.0f; // 如果样本小于阈值,则将其置为零 | ||
64 | +// } | ||
65 | +// } | ||
66 | +// } | ||
67 | + | ||
68 | +// T_JZsdkReturnCode PcmNoiseReduction(U16_t *data, int len) | ||
69 | +// { | ||
70 | +// float float_buffer[len]; | ||
71 | + | ||
72 | +// // 将大端格式转换为浮点数 | ||
73 | +// for (size_t i = 0; i < len; i++) { | ||
74 | +// // 字节交换 | ||
75 | +// short sample = swap_endian(data[i]); | ||
76 | +// float_buffer[i] = sample / 32768.0f; // 从16-bit转换到 [-1.0, 1.0] | ||
77 | +// } | ||
78 | + | ||
79 | +// reduce_noise(float_buffer, len); | ||
80 | + | ||
81 | +// // 转换回16-bit并写入输出文件 | ||
82 | +// for (size_t i = 0; i < len; i++) | ||
83 | +// { | ||
84 | +// data[i] = (U16_t)(float_buffer[i] * 32767.0f); // 溢出处理 | ||
85 | + | ||
86 | +// data[i] = swap_endian(data[i]); | ||
87 | +// } | ||
88 | + | ||
89 | +// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
90 | +// } |
@@ -34,6 +34,7 @@ T_JZsdkReturnCode Start_voice() | @@ -34,6 +34,7 @@ T_JZsdkReturnCode Start_voice() | ||
34 | //播放喊话器启动中 | 34 | //播放喊话器启动中 |
35 | Megaphone_TTS_Play("The direct connection mode of the speaker is being activated", strlen("The direct connection mode of the speaker is being activated"), JZ_FLAGCODE_OFF); | 35 | Megaphone_TTS_Play("The direct connection mode of the speaker is being activated", strlen("The direct connection mode of the speaker is being activated"), JZ_FLAGCODE_OFF); |
36 | 36 | ||
37 | + delayS(2); | ||
37 | } | 38 | } |
38 | 39 | ||
39 | delayS(4); | 40 | delayS(4); |
@@ -283,23 +283,39 @@ static void *DecodeAudioData_task(void *arg) | @@ -283,23 +283,39 @@ static void *DecodeAudioData_task(void *arg) | ||
283 | 283 | ||
284 | USER_LOG_INFO("decode data to file: %d\r\n", frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS); | 284 | USER_LOG_INFO("decode data to file: %d\r\n", frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS); |
285 | /* Convert to little-endian ordering. */ | 285 | /* Convert to little-endian ordering. */ |
286 | + | ||
287 | + opus_int16 TempPcm[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS]; | ||
288 | + | ||
286 | for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++) { | 289 | for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++) { |
290 | + // if (out[i] == 0xFFFF) | ||
291 | + // { | ||
292 | + // pcm_bytes[2 * i] = 0x00; | ||
293 | + // pcm_bytes[2 * i + 1] = 0x00; | ||
294 | + // continue; | ||
295 | + // } | ||
287 | 296 | ||
297 | + //方案一 | ||
298 | + TempPcm [i] = out[i] & 0xFF | (out[i] >> 8) << 8; | ||
299 | + PcmNoiseReduction(TempPcm, 1); | ||
288 | 300 | ||
301 | + //方案二 | ||
302 | + // TempPcm [i] = ((out[i] & 0xFF) << 8) | (out [i] >> 8); | ||
303 | + // PcmNoiseReduction(TempPcm, 1); | ||
304 | + // TempPcm [i] = TempPcm[i] & 0xFF | (TempPcm[i] >> 8) << 8; | ||
289 | 305 | ||
290 | - if (out[i] == 0xFFFF) | ||
291 | - { | ||
292 | - pcm_bytes[2 * i] = 0x00; | ||
293 | - pcm_bytes[2 * i + 1] = 0x00; | ||
294 | - continue; | ||
295 | - } | 306 | + // pcm_bytes[2 * i] = out[i] & 0xFF; |
307 | + // pcm_bytes[2 * i + 1] = (out[i] >> 8) & 0xFF; | ||
296 | 308 | ||
297 | - pcm_bytes[2 * i] = out[i] & 0xFF; | ||
298 | - pcm_bytes[2 * i + 1] = (out[i] >> 8) & 0xFF; | ||
299 | } | 309 | } |
300 | 310 | ||
311 | + fwrite(TempPcm, sizeof(short), frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS, fout); | ||
312 | + | ||
313 | + | ||
314 | + //PcmNoiseReduction(pcm_bytes, frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * 2); | ||
315 | + | ||
316 | + | ||
301 | /* Write the decoded audio to file. */ | 317 | /* Write the decoded audio to file. */ |
302 | - fwrite(pcm_bytes, sizeof(short), frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS, fout); | 318 | + //fwrite(pcm_bytes, sizeof(short), frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS, fout); |
303 | } | 319 | } |
304 | 320 | ||
305 | 321 |
-
请 注册 或 登录 后发表评论