优化雷鸟音频测试 2853/1 2853/head 2854/target/1 2855/target/1
authorpenglei <1624952103@qq.com>
Thu, 4 Dec 2025 01:52:17 +0000 (09:52 +0800)
committerpenglei <1624952103@qq.com>
Thu, 4 Dec 2025 01:52:17 +0000 (09:52 +0800)
code/sdk/zhihui/utilscpp/audio_test.cpp

index 4f33bde..c11f2b3 100644 (file)
@@ -71,6 +71,20 @@ static uint32_t GetCurrentTimeMs(void)
     return (tick_count * 1000) / tick_freq;
 }
 
+static void AudioCircleTestDataCallback(const uint8_t* data, uint32_t size, void* userData)
+{
+    (void)userData;
+    
+    if (data == nullptr || size == 0) {
+        return;
+    }
+    
+    printf("size : %d\n",size);
+
+    int32_t ret = AI_SendAudioDataToQueue(data, size);
+    return;
+}
+
 /**
  * @brief AI语音数据回调函数 - 收集录音数据用于音量计算
  * @param data 音频数据
@@ -275,7 +289,7 @@ static void* AudioPlayThread(void* arg)
             // 使用AI_WriteAudioData发送到播放服务
             // 注意:AI_WriteAudioData内部有usleep(40*size),5个周期(160字节)会sleep约6.4ms
             // 这个sleep会自然控制播放节奏,我们不需要额外等待
-            int32_t ret = AI_WriteAudioData(pcm_buffer, buffer_size);
+            int32_t ret = AI_SendAudioDataToQueue(pcm_buffer, buffer_size);
             if (ret != 0) {
                 // 如果发送失败,短暂等待后继续
                 usleep(500);
@@ -292,6 +306,44 @@ exit_loop:
     return nullptr;
 }
 
+/**
+ * @brief 启动音频测试
+ * @return 0 成功, -1 失败
+ */
+int custom_audio_circle_test_start(void)
+{
+    PRINT("[AudioTest] Starting audio test...\r\n");
+
+    // 初始化播放音量(默认1.0,即原始音量)
+    g_audio_test_ctx.play_volume = 1.0f;
+    
+    // 初始化AI媒体服务
+    int32_t ret ;
+    // 启动AI语音服务(使用old_Start_AIVoice)
+    // 不使用OGG封装
+    ret = old_Start_AIVoice(AudioCircleTestDataCallback, nullptr, nullptr,nullptr, nullptr,false);
+    if (ret != 0) {
+        PRINT("[AudioTest] Failed to start AI voice service: %d\r\n", ret);
+        // MediaMutexUnLock(g_audio_test_ctx.mutex);
+        return -1;
+    }
+
+    PRINT("[AudioTest] Audio test started successfully\r\n");
+    PRINT("[AudioTest] Playing 1kHz tone, monitoring volume every 0.5s...\r\n");
+    
+    return 0;
+}
+
+int custom_audio_circle_test_stop(void)
+{
+    PRINT("[AudioTest] Starting audio test...\r\n");
+
+    StopAIVoice();
+    
+    return 0;
+}
+
+
 /**
  * @brief 启动音频测试
  * @return 0 成功, -1 失败