File size: 2,679 Bytes
a37072b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
cmake_minimum_required(VERSION 3.16)
project(zipvoice_axera_resident_server C CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# ---- Paths ----
set(ZIPVOICE_SRC "${CMAKE_CURRENT_SOURCE_DIR}/../models/zipvoice/cpp")
set(BSP_MSP_DIR  "${CMAKE_CURRENT_SOURCE_DIR}/../TTS/ZipVoice.AXERA/cpp/ax650n_bsp_sdk/msp/out")

if(NOT EXISTS "${BSP_MSP_DIR}")
    message(FATAL_ERROR "BSP not found: ${BSP_MSP_DIR}. Run download_bsp.sh first.")
endif()

set(MSP_INC_DIR ${BSP_MSP_DIR}/include)
set(MSP_LIB_DIR ${BSP_MSP_DIR}/lib)

# ---- Sources ----
add_library(zipvoice_axera SHARED
    zipvoice_c_api.cpp
    zipvoice_resident_server.cpp
    ${ZIPVOICE_SRC}/src/tokenizer.cpp
    ${ZIPVOICE_SRC}/src/fbank.cpp
    ${ZIPVOICE_SRC}/src/zipvoice_engine.cpp
    ${ZIPVOICE_SRC}/src/vocoder.cpp
    ${ZIPVOICE_SRC}/src/EngineWrapper.cpp
    ${ZIPVOICE_SRC}/third_party/kissfft/kiss_fft.c
)

add_executable(zipvoice_axera_server
    main.cpp
    zipvoice_resident_server.cpp
    ${ZIPVOICE_SRC}/src/tokenizer.cpp
    ${ZIPVOICE_SRC}/src/fbank.cpp
    ${ZIPVOICE_SRC}/src/zipvoice_engine.cpp
    ${ZIPVOICE_SRC}/src/vocoder.cpp
    ${ZIPVOICE_SRC}/src/EngineWrapper.cpp
    ${ZIPVOICE_SRC}/third_party/kissfft/kiss_fft.c
)

# ---- Includes ----
target_include_directories(zipvoice_axera PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${ZIPVOICE_SRC}
    ${ZIPVOICE_SRC}/src
    ${ZIPVOICE_SRC}/utils
    ${ZIPVOICE_SRC}/third_party/kissfft
    ${MSP_INC_DIR}
)

target_include_directories(zipvoice_axera_server PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${ZIPVOICE_SRC}
    ${ZIPVOICE_SRC}/src
    ${ZIPVOICE_SRC}/utils
    ${ZIPVOICE_SRC}/third_party/kissfft
    ${MSP_INC_DIR}
)

# ---- Link ----
# Use target_link_directories (CMake >= 3.13) for cross-compilation compat
# onnxruntime is a transitive dep of ax_engine; ship it from the models/ lib dir
set(ORT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../models/melotts_sherpa/build/lib")
target_link_directories(zipvoice_axera PRIVATE ${MSP_LIB_DIR} ${ORT_LIB_DIR})
target_link_directories(zipvoice_axera_server PRIVATE ${MSP_LIB_DIR} ${ORT_LIB_DIR})

target_link_libraries(zipvoice_axera PRIVATE
    ax_sys
    ax_engine
    ax_interpreter
    onnxruntime
    pthread
    dl
    m
    stdc++
)

target_link_libraries(zipvoice_axera_server PRIVATE
    ax_sys
    ax_engine
    ax_interpreter
    onnxruntime
    pthread
    dl
    m
    stdc++
)

set_target_properties(zipvoice_axera PROPERTIES
    INSTALL_RPATH "$ORIGIN/../lib"
)

set_target_properties(zipvoice_axera_server PROPERTIES
    INSTALL_RPATH "$ORIGIN/../lib"
)

install(TARGETS zipvoice_axera DESTINATION lib)
install(TARGETS zipvoice_axera_server DESTINATION bin)