正在显示
8 个修改的文件
包含
129 行增加
和
35 行删除
| @@ -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) | 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 | + } | ||
| 30 | + } | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | +T_JZsdkReturnCode PcmNoiseReduction(short *data, int len) | ||
| 9 | { | 34 | { |
| 10 | - for (int i = 0; i < len; i++) | 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] | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + reduce_noise(float_buffer, len); | ||
| 43 | + | ||
| 44 | + // 转换回16-bit并写入输出文件 | ||
| 45 | + for (size_t i = 0; i < len; i++) | ||
| 11 | { | 46 | { |
| 12 | - if (abs(data) >= 0xFF) | ||
| 13 | - { | ||
| 14 | - data[i] = 0; | ||
| 15 | - } | 47 | + data[i] = (short)(float_buffer[i] * 32767.0f); // 溢出处理 |
| 16 | } | 48 | } |
| 17 | - | ||
| 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 | - for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++) { | 286 | + |
| 287 | + opus_int16 TempPcm[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS]; | ||
| 287 | 288 | ||
| 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 | + // } | ||
| 296 | + | ||
| 297 | + //方案一 | ||
| 298 | + TempPcm [i] = out[i] & 0xFF | (out[i] >> 8) << 8; | ||
| 299 | + PcmNoiseReduction(TempPcm, 1); | ||
| 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; | ||
| 305 | + | ||
| 306 | + // pcm_bytes[2 * i] = out[i] & 0xFF; | ||
| 307 | + // pcm_bytes[2 * i + 1] = (out[i] >> 8) & 0xFF; | ||
| 308 | + | ||
| 309 | + } | ||
| 288 | 310 | ||
| 311 | + fwrite(TempPcm, sizeof(short), frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS, fout); | ||
| 289 | 312 | ||
| 290 | - if (out[i] == 0xFFFF) | ||
| 291 | - { | ||
| 292 | - pcm_bytes[2 * i] = 0x00; | ||
| 293 | - pcm_bytes[2 * i + 1] = 0x00; | ||
| 294 | - continue; | ||
| 295 | - } | ||
| 296 | 313 | ||
| 297 | - pcm_bytes[2 * i] = out[i] & 0xFF; | ||
| 298 | - pcm_bytes[2 * i + 1] = (out[i] >> 8) & 0xFF; | ||
| 299 | - } | 314 | + //PcmNoiseReduction(pcm_bytes, frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * 2); |
| 300 | 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 |
-
请 注册 或 登录 后发表评论