diff --git a/projects/llm_framework/main_audio/SConstruct b/projects/llm_framework/main_audio/SConstruct index 2fa5dbb..444248e 100644 --- a/projects/llm_framework/main_audio/SConstruct +++ b/projects/llm_framework/main_audio/SConstruct @@ -28,7 +28,7 @@ if 'CONFIG_AX_620E_MSP_ENABLED' in os.environ: STATIC_FILES += [AFile('audio.json'), AFile('audio_kit.json')] STATIC_FILES += Glob('mode_*.json') -env['COMPONENTS'].append({'target':'llm_audio-1.6', +env['COMPONENTS'].append({'target':'llm_audio-1.7', 'SRCS':SRCS, 'INCLUDE':INCLUDE, 'PRIVATE_INCLUDE':PRIVATE_INCLUDE, diff --git a/projects/llm_framework/main_audio/src/main.cpp b/projects/llm_framework/main_audio/src/main.cpp index a892e3b..de6165f 100644 --- a/projects/llm_framework/main_audio/src/main.cpp +++ b/projects/llm_framework/main_audio/src/main.cpp @@ -49,19 +49,48 @@ private: self->pub_ctx_->send_data((const char *)data, size); } + static std::string mono_to_stereo_s16le(const std::string &mono_data) + { + if (mono_data.empty()) return mono_data; + + size_t sample_count = mono_data.size() / 2; + std::string stereo_data; + stereo_data.reserve(mono_data.size() * 2); + + const char *src = mono_data.data(); + for (size_t i = 0; i < sample_count; ++i) { + stereo_data.append(src + i * 2, 2); + stereo_data.append(src + i * 2, 2); + } + return stereo_data; + } + void hw_queue_play(const std::shared_ptr &arg) { if (audio_clear_flage_) { return; } + std::shared_ptr originalPtr = std::static_pointer_cast(arg); + std::string audio_data(static_cast(originalPtr->data()), originalPtr->size()); + + std::string final_data = audio_data; + if (play_config.channel == 2) { + final_data = mono_to_stereo_s16le(audio_data); + } + std::lock_guard guard(ax_play_mtx); ax_play(play_config.card, play_config.device, play_config.volume, play_config.channel, play_config.rate, - play_config.bit, originalPtr->data(), originalPtr->size()); + play_config.bit, final_data.c_str(), final_data.length()); } void hw_play(const std::string &audio_data) { + std::string final_data = audio_data; + + if (play_config.channel == 2) { + final_data = mono_to_stereo_s16le(audio_data); + } std::lock_guard guard(ax_play_mtx); ax_play(play_config.card, play_config.device, play_config.volume, play_config.channel, play_config.rate, play_config.bit, audio_data.c_str(), audio_data.length()); diff --git a/projects/llm_framework/main_llm/SConstruct b/projects/llm_framework/main_llm/SConstruct index b6a3d19..608ef38 100644 --- a/projects/llm_framework/main_llm/SConstruct +++ b/projects/llm_framework/main_llm/SConstruct @@ -66,7 +66,7 @@ ignore['ignore'] = list(set(ignore['ignore'])) with open('../dist/fileignore', 'w') as f: json.dump(ignore, f, indent=4) -env['COMPONENTS'].append({'target':'llm_llm-1.9', +env['COMPONENTS'].append({'target':'llm_llm-1.10', 'SRCS':SRCS, 'INCLUDE':INCLUDE, 'PRIVATE_INCLUDE':PRIVATE_INCLUDE, diff --git a/projects/llm_framework/main_openai_api/SConstruct b/projects/llm_framework/main_openai_api/SConstruct index d2851e7..5259c6b 100644 --- a/projects/llm_framework/main_openai_api/SConstruct +++ b/projects/llm_framework/main_openai_api/SConstruct @@ -18,7 +18,7 @@ LINK_SEARCH_PATH = [] STATIC_FILES = [] -ModuleLLMOpenAIPluginPath = wget_github_commit('https://github.com/m5stack/ModuleLLM-OpenAI-Plugin.git', '748ec04e6dde31e6283921e9635204b4b8f8ede2', True) +ModuleLLMOpenAIPluginPath = wget_github_commit('https://github.com/m5stack/ModuleLLM-OpenAI-Plugin.git', '5298be215735f5b1c21bc9225c38d7cb9c1933db', True) python_venv = check_wget_down("https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/linux/llm/m5stack_llm-openai-api-python-venv_v1.6.tar.gz", 'm5stack_llm-openai-api-python-venv_v1.6.tar.gz') @@ -52,7 +52,7 @@ ignore['ignore'] = list(set(ignore['ignore'])) with open('../dist/fileignore', 'w') as f: json.dump(ignore, f, indent=4) -env['COMPONENTS'].append({'target':'llm_openai_api-1.7', +env['COMPONENTS'].append({'target':'llm_openai_api-1.8', 'SRCS':SRCS, 'INCLUDE':INCLUDE, 'PRIVATE_INCLUDE':PRIVATE_INCLUDE, diff --git a/projects/llm_framework/tools/llm_pack.py b/projects/llm_framework/tools/llm_pack.py index 581d181..478c919 100755 --- a/projects/llm_framework/tools/llm_pack.py +++ b/projects/llm_framework/tools/llm_pack.py @@ -374,10 +374,10 @@ if __name__ == "__main__": # Unit 'lib-llm':[create_lib_deb,'lib-llm', '1.8', src_folder, revision], 'llm-sys':[create_bin_deb,'llm-sys', '1.6', src_folder, revision], - 'llm-audio':[create_bin_deb,'llm-audio', '1.6', src_folder, revision], + 'llm-audio':[create_bin_deb,'llm-audio', '1.7', src_folder, revision], 'llm-kws':[create_bin_deb,'llm-kws', '1.9', src_folder, revision], 'llm-asr':[create_bin_deb,'llm-asr', '1.7', src_folder, revision], - 'llm-llm':[create_bin_deb,'llm-llm', '1.9', src_folder, revision], + 'llm-llm':[create_bin_deb,'llm-llm', '1.10', src_folder, revision], 'llm-tts':[create_bin_deb,'llm-tts', '1.6', src_folder, revision], 'llm-melotts':[create_bin_deb,'llm-melotts', '1.9', src_folder, revision], 'llm-camera':[create_bin_deb,'llm-camera', '1.9', src_folder, revision, 'lib-llm'], @@ -387,7 +387,7 @@ if __name__ == "__main__": 'llm-depth-anything':[create_bin_deb,'llm-depth-anything', '1.7', src_folder, revision], 'llm-vad':[create_bin_deb,'llm-vad', '1.8', src_folder, revision], 'llm-whisper':[create_bin_deb,'llm-whisper', '1.8', src_folder, revision], - 'llm-openai-api':[create_bin_deb,'llm-openai-api', '1.7', src_folder, revision], + 'llm-openai-api':[create_bin_deb,'llm-openai-api', '1.8', src_folder, revision], 'llm-cosy-voice':[create_bin_deb,'llm-cosy-voice', '1.8', src_folder, revision], # keyword spotting Audio file 'llm-model-audio-en-us':[create_data_deb,'llm-model-audio-en-us', data_version, src_folder, revision],