完成语音识别功能(win测试,arm未知)

This commit is contained in:
HP
2026-06-14 20:31:04 +08:00
parent de85a8d41d
commit e0946fbf36
900 changed files with 272942 additions and 11214 deletions
+83
View File
@@ -2,12 +2,60 @@ set(TOM_GAME_TARGET IMX6U-Game)
set(TOM_ATLAS_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/generated/tom_atlas.h")
set_source_files_properties(${TOM_ATLAS_HEADER} PROPERTIES GENERATED TRUE)
set(TOM_GAME_ENABLE_TFLITE_C_API_DEFAULT OFF)
if(CMAKE_CROSSCOMPILING AND USE_FRAMEBUFFER)
set(TOM_GAME_ENABLE_TFLITE_C_API_DEFAULT ON)
endif()
if(NOT DEFINED CACHE{TOM_GAME_ENABLE_TFLITE_C_API})
set(TOM_GAME_ENABLE_TFLITE_C_API
${TOM_GAME_ENABLE_TFLITE_C_API_DEFAULT}
CACHE BOOL
"Enable tiny KWS through TensorFlow Lite C API"
)
endif()
set(TOM_GAME_TFLITE_INCLUDE_DIR "" CACHE PATH "TensorFlow Lite C API include directory")
set(TOM_GAME_TFLITE_LIBRARY
"${CMAKE_CURRENT_SOURCE_DIR}/runtime/lib/tensorflow/lite/c/libtensorflowlite_c.so"
CACHE FILEPATH
"TensorFlow Lite C API library"
)
if(TOM_GAME_ENABLE_TFLITE_C_API AND NOT TOM_GAME_TFLITE_INCLUDE_DIR)
set(TOM_GAME_TFLITE_INCLUDE_CANDIDATES
"$ENV{TOM_GAME_TENSORFLOW_ROOT}"
"$ENV{TENSORFLOW_ROOT}"
"$ENV{TF_SRC}"
"$ENV{HOME}/tensorflow-master/tensorflow-master"
"$ENV{HOME}/tensorflow-master"
"${CMAKE_CURRENT_SOURCE_DIR}/tensorflow"
"${PROJECT_SOURCE_DIR}/tensorflow"
)
foreach(TOM_GAME_TFLITE_INCLUDE_CANDIDATE IN LISTS TOM_GAME_TFLITE_INCLUDE_CANDIDATES)
if(TOM_GAME_TFLITE_INCLUDE_CANDIDATE AND
EXISTS "${TOM_GAME_TFLITE_INCLUDE_CANDIDATE}/tensorflow/lite/c/c_api.h")
set(TOM_GAME_TFLITE_INCLUDE_DIR
"${TOM_GAME_TFLITE_INCLUDE_CANDIDATE}"
CACHE PATH
"TensorFlow Lite C API include directory"
FORCE
)
break()
endif()
endforeach()
endif()
add_executable(${TOM_GAME_TARGET}
Main.cpp
src/app/TomGameApp.cpp
src/audio/VoiceEffect.cpp
src/audio/VoicePlayer.cpp
src/audio/VoiceRecorder.cpp
src/recognition/KeywordRecognizer.cpp
src/recognition/TinyKwsRecognizer.cpp
src/recognition/PythonKeywordRecognizer.cpp
${TOM_ATLAS_HEADER}
)
@@ -15,11 +63,46 @@ target_include_directories(${TOM_GAME_TARGET} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src/app
${CMAKE_CURRENT_SOURCE_DIR}/src/audio
${CMAKE_CURRENT_SOURCE_DIR}/src/recognition
${CMAKE_CURRENT_SOURCE_DIR}/generated
)
imx6u_configure_app_target(${TOM_GAME_TARGET})
if(TOM_GAME_ENABLE_TFLITE_C_API)
if(NOT TOM_GAME_TFLITE_INCLUDE_DIR OR
NOT EXISTS "${TOM_GAME_TFLITE_INCLUDE_DIR}/tensorflow/lite/c/c_api.h")
message(FATAL_ERROR
"TOM_GAME_ENABLE_TFLITE_C_API is enabled, but TensorFlow Lite C API headers were not found. "
"Set TOM_GAME_TFLITE_INCLUDE_DIR to the TensorFlow source root, for example "
"-DTOM_GAME_TFLITE_INCLUDE_DIR=/home/xushengyi/tensorflow-master/tensorflow-master"
)
endif()
if(NOT TOM_GAME_TFLITE_LIBRARY OR NOT EXISTS "${TOM_GAME_TFLITE_LIBRARY}")
message(FATAL_ERROR
"TOM_GAME_ENABLE_TFLITE_C_API is enabled, but libtensorflowlite_c.so was not found. "
"Set TOM_GAME_TFLITE_LIBRARY to the ARMhf TensorFlow Lite C API shared library."
)
endif()
message(STATUS "TomGame tiny KWS enabled with TensorFlow Lite C API")
message(STATUS "TensorFlow Lite include root: ${TOM_GAME_TFLITE_INCLUDE_DIR}")
message(STATUS "TensorFlow Lite C library: ${TOM_GAME_TFLITE_LIBRARY}")
target_compile_definitions(${TOM_GAME_TARGET} PRIVATE TOM_GAME_ENABLE_TFLITE_C_API)
target_include_directories(${TOM_GAME_TARGET} PRIVATE ${TOM_GAME_TFLITE_INCLUDE_DIR})
target_link_libraries(${TOM_GAME_TARGET} PRIVATE ${TOM_GAME_TFLITE_LIBRARY})
add_custom_command(TARGET ${TOM_GAME_TARGET} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${TOM_GAME_TFLITE_LIBRARY}"
"$<TARGET_FILE_DIR:${TOM_GAME_TARGET}>"
COMMENT "Copying TensorFlow Lite C API runtime next to Tom game binary"
VERBATIM
)
endif()
if(CMAKE_CROSSCOMPILING AND NOT EXISTS "${TOM_ATLAS_HEADER}")
message(FATAL_ERROR
"Tom atlas header is missing. Run GenerateTomAtlasHeader in a host build before cross compiling."