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 音频数据
// 使用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);
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 失败