Fangjun Kuang
Committed by GitHub

Add MeloTTS example for ios (#1223)

@@ -39,96 +39,90 @@ echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR" @@ -39,96 +39,90 @@ echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR"
39 # The symbol _NSLog is not defined 39 # The symbol _NSLog is not defined
40 # 40 #
41 41
42 -if [[ ! -f ./build/simulator_x86_64/lib/libsherpa-onnx-c-api.a ]]; then  
43 - cmake \  
44 - -DBUILD_PIPER_PHONMIZE_EXE=OFF \  
45 - -DBUILD_PIPER_PHONMIZE_TESTS=OFF \  
46 - -DBUILD_ESPEAK_NG_EXE=OFF \  
47 - -DBUILD_ESPEAK_NG_TESTS=OFF \  
48 - -S .. \  
49 - -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \  
50 - -DPLATFORM=SIMULATOR64 \  
51 - -DENABLE_BITCODE=0 \  
52 - -DENABLE_ARC=1 \  
53 - -DENABLE_VISIBILITY=0 \  
54 - -DCMAKE_BUILD_TYPE=Release \  
55 - -DBUILD_SHARED_LIBS=OFF \  
56 - -DSHERPA_ONNX_ENABLE_PYTHON=OFF \  
57 - -DSHERPA_ONNX_ENABLE_TESTS=OFF \  
58 - -DSHERPA_ONNX_ENABLE_CHECK=OFF \  
59 - -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \  
60 - -DSHERPA_ONNX_ENABLE_JNI=OFF \  
61 - -DSHERPA_ONNX_ENABLE_C_API=ON \  
62 - -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \  
63 - -DDEPLOYMENT_TARGET=13.0 \  
64 - -B build/simulator_x86_64  
65 -  
66 - cmake --build build/simulator_x86_64 -j 4 --verbose  
67 -fi 42 +cmake \
  43 + -DBUILD_PIPER_PHONMIZE_EXE=OFF \
  44 + -DBUILD_PIPER_PHONMIZE_TESTS=OFF \
  45 + -DBUILD_ESPEAK_NG_EXE=OFF \
  46 + -DBUILD_ESPEAK_NG_TESTS=OFF \
  47 + -S .. \
  48 + -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \
  49 + -DPLATFORM=SIMULATOR64 \
  50 + -DENABLE_BITCODE=0 \
  51 + -DENABLE_ARC=1 \
  52 + -DENABLE_VISIBILITY=0 \
  53 + -DCMAKE_BUILD_TYPE=Release \
  54 + -DBUILD_SHARED_LIBS=OFF \
  55 + -DSHERPA_ONNX_ENABLE_PYTHON=OFF \
  56 + -DSHERPA_ONNX_ENABLE_TESTS=OFF \
  57 + -DSHERPA_ONNX_ENABLE_CHECK=OFF \
  58 + -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
  59 + -DSHERPA_ONNX_ENABLE_JNI=OFF \
  60 + -DSHERPA_ONNX_ENABLE_C_API=ON \
  61 + -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
  62 + -DDEPLOYMENT_TARGET=13.0 \
  63 + -B build/simulator_x86_64
  64 +
  65 +cmake --build build/simulator_x86_64 -j 4 --verbose
68 66
69 echo "Building for simulator (arm64)" 67 echo "Building for simulator (arm64)"
70 68
71 -if [[ ! -f ./build/simulator_arm64/lib/libsherpa-onnx-c-api.a ]]; then  
72 - cmake \  
73 - -DBUILD_PIPER_PHONMIZE_EXE=OFF \  
74 - -DBUILD_PIPER_PHONMIZE_TESTS=OFF \  
75 - -DBUILD_ESPEAK_NG_EXE=OFF \  
76 - -DBUILD_ESPEAK_NG_TESTS=OFF \  
77 - -S .. \  
78 - -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \  
79 - -DPLATFORM=SIMULATORARM64 \  
80 - -DENABLE_BITCODE=0 \  
81 - -DENABLE_ARC=1 \  
82 - -DENABLE_VISIBILITY=0 \  
83 - -DCMAKE_BUILD_TYPE=Release \  
84 - -DCMAKE_INSTALL_PREFIX=./install \  
85 - -DBUILD_SHARED_LIBS=OFF \  
86 - -DSHERPA_ONNX_ENABLE_PYTHON=OFF \  
87 - -DSHERPA_ONNX_ENABLE_TESTS=OFF \  
88 - -DSHERPA_ONNX_ENABLE_CHECK=OFF \  
89 - -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \  
90 - -DSHERPA_ONNX_ENABLE_JNI=OFF \  
91 - -DSHERPA_ONNX_ENABLE_C_API=ON \  
92 - -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \  
93 - -DDEPLOYMENT_TARGET=13.0 \  
94 - -B build/simulator_arm64  
95 -  
96 - cmake --build build/simulator_arm64 -j 4 --verbose  
97 -fi 69 +cmake \
  70 + -DBUILD_PIPER_PHONMIZE_EXE=OFF \
  71 + -DBUILD_PIPER_PHONMIZE_TESTS=OFF \
  72 + -DBUILD_ESPEAK_NG_EXE=OFF \
  73 + -DBUILD_ESPEAK_NG_TESTS=OFF \
  74 + -S .. \
  75 + -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \
  76 + -DPLATFORM=SIMULATORARM64 \
  77 + -DENABLE_BITCODE=0 \
  78 + -DENABLE_ARC=1 \
  79 + -DENABLE_VISIBILITY=0 \
  80 + -DCMAKE_BUILD_TYPE=Release \
  81 + -DCMAKE_INSTALL_PREFIX=./install \
  82 + -DBUILD_SHARED_LIBS=OFF \
  83 + -DSHERPA_ONNX_ENABLE_PYTHON=OFF \
  84 + -DSHERPA_ONNX_ENABLE_TESTS=OFF \
  85 + -DSHERPA_ONNX_ENABLE_CHECK=OFF \
  86 + -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
  87 + -DSHERPA_ONNX_ENABLE_JNI=OFF \
  88 + -DSHERPA_ONNX_ENABLE_C_API=ON \
  89 + -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
  90 + -DDEPLOYMENT_TARGET=13.0 \
  91 + -B build/simulator_arm64
  92 +
  93 +cmake --build build/simulator_arm64 -j 4 --verbose
98 94
99 echo "Building for arm64" 95 echo "Building for arm64"
100 96
101 export SHERPA_ONNXRUNTIME_LIB_DIR=$PWD/ios-onnxruntime/onnxruntime.xcframework/ios-arm64 97 export SHERPA_ONNXRUNTIME_LIB_DIR=$PWD/ios-onnxruntime/onnxruntime.xcframework/ios-arm64
102 98
103 -if [[ ! -f ./build/os64/lib/libsherpa-onnx-c-api.a ]]; then  
104 - cmake \  
105 - -DBUILD_PIPER_PHONMIZE_EXE=OFF \  
106 - -DBUILD_PIPER_PHONMIZE_TESTS=OFF \  
107 - -DBUILD_ESPEAK_NG_EXE=OFF \  
108 - -DBUILD_ESPEAK_NG_TESTS=OFF \  
109 - -S .. \  
110 - -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \  
111 - -DPLATFORM=OS64 \  
112 - -DENABLE_BITCODE=0 \  
113 - -DENABLE_ARC=1 \  
114 - -DENABLE_VISIBILITY=0 \  
115 - -DCMAKE_INSTALL_PREFIX=./install \  
116 - -DCMAKE_BUILD_TYPE=Release \  
117 - -DBUILD_SHARED_LIBS=OFF \  
118 - -DSHERPA_ONNX_ENABLE_PYTHON=OFF \  
119 - -DSHERPA_ONNX_ENABLE_TESTS=OFF \  
120 - -DSHERPA_ONNX_ENABLE_CHECK=OFF \  
121 - -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \  
122 - -DSHERPA_ONNX_ENABLE_JNI=OFF \  
123 - -DSHERPA_ONNX_ENABLE_C_API=ON \  
124 - -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \  
125 - -DDEPLOYMENT_TARGET=13.0 \  
126 - -B build/os64  
127 -  
128 - cmake --build build/os64 -j 4  
129 - # Generate headers for sherpa-onnx.xcframework  
130 - cmake --build build/os64 --target install  
131 -fi 99 +cmake \
  100 + -DBUILD_PIPER_PHONMIZE_EXE=OFF \
  101 + -DBUILD_PIPER_PHONMIZE_TESTS=OFF \
  102 + -DBUILD_ESPEAK_NG_EXE=OFF \
  103 + -DBUILD_ESPEAK_NG_TESTS=OFF \
  104 + -S .. \
  105 + -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \
  106 + -DPLATFORM=OS64 \
  107 + -DENABLE_BITCODE=0 \
  108 + -DENABLE_ARC=1 \
  109 + -DENABLE_VISIBILITY=0 \
  110 + -DCMAKE_INSTALL_PREFIX=./install \
  111 + -DCMAKE_BUILD_TYPE=Release \
  112 + -DBUILD_SHARED_LIBS=OFF \
  113 + -DSHERPA_ONNX_ENABLE_PYTHON=OFF \
  114 + -DSHERPA_ONNX_ENABLE_TESTS=OFF \
  115 + -DSHERPA_ONNX_ENABLE_CHECK=OFF \
  116 + -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
  117 + -DSHERPA_ONNX_ENABLE_JNI=OFF \
  118 + -DSHERPA_ONNX_ENABLE_C_API=ON \
  119 + -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
  120 + -DDEPLOYMENT_TARGET=13.0 \
  121 + -B build/os64
  122 +
  123 +cmake --build build/os64 -j 4
  124 +# Generate headers for sherpa-onnx.xcframework
  125 +cmake --build build/os64 --target install
132 126
133 echo "Generate xcframework" 127 echo "Generate xcframework"
134 128
@@ -93,12 +93,50 @@ func getTtsFor_en_US_amy_low() -> SherpaOnnxOfflineTtsWrapper { @@ -93,12 +93,50 @@ func getTtsFor_en_US_amy_low() -> SherpaOnnxOfflineTtsWrapper {
93 return SherpaOnnxOfflineTtsWrapper(config: &config) 93 return SherpaOnnxOfflineTtsWrapper(config: &config)
94 } 94 }
95 95
  96 +// https://k2-fsa.github.io/sherpa/onnx/tts/pretrained_models/vits.html#vits-melo-tts-zh-en-chinese-english-1-speaker
  97 +func getTtsFor_zh_en_melo_tts() -> SherpaOnnxOfflineTtsWrapper {
  98 + // please see https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-melo-tts-zh_en.tar.bz2
  99 +
  100 + let model = getResource("model", "onnx")
  101 +
  102 + let tokens = getResource("tokens", "txt")
  103 + let lexicon = getResource("lexicon", "txt")
  104 +
  105 + let dictDir = resourceURL(to: "dict")
  106 +
  107 + let numFst = getResource("number", "fst")
  108 + let dateFst = getResource("date", "fst")
  109 + let phoneFst = getResource("phone", "fst")
  110 + let ruleFsts = "\(dateFst),\(phoneFst),\(numFst)"
  111 +
  112 + let vits = sherpaOnnxOfflineTtsVitsModelConfig(
  113 + model: model, lexicon: lexicon, tokens: tokens,
  114 + dataDir: "",
  115 + noiseScale: 0.667,
  116 + noiseScaleW: 0.8,
  117 + lengthScale: 1.0,
  118 + dictDir: dictDir
  119 + )
  120 +
  121 + let modelConfig = sherpaOnnxOfflineTtsModelConfig(vits: vits)
  122 + var config = sherpaOnnxOfflineTtsConfig(
  123 + model: modelConfig,
  124 + ruleFsts: ruleFsts
  125 + )
  126 +
  127 + return SherpaOnnxOfflineTtsWrapper(config: &config)
  128 +}
  129 +
96 func createOfflineTts() -> SherpaOnnxOfflineTtsWrapper { 130 func createOfflineTts() -> SherpaOnnxOfflineTtsWrapper {
  131 + // Please enable only one of them
  132 +
97 return getTtsFor_en_US_amy_low() 133 return getTtsFor_en_US_amy_low()
98 134
99 // return getTtsForVCTK() 135 // return getTtsForVCTK()
100 136
101 // return getTtsForAishell3() 137 // return getTtsForAishell3()
102 138
  139 + // return getTtsFor_zh_en_melo_tts()
  140 +
103 // please add more models on need by following the above two examples 141 // please add more models on need by following the above two examples
104 } 142 }