Fangjun Kuang
Committed by GitHub

Support the platform iOS for Flutter (#1079)

正在显示 67 个修改的文件 包含 2040 行增加46 行删除
@@ -24,14 +24,6 @@ jobs: @@ -24,14 +24,6 @@ jobs:
24 steps: 24 steps:
25 - uses: actions/checkout@v4 25 - uses: actions/checkout@v4
26 26
27 - - name: Setup Flutter SDK  
28 - uses: flutter-actions/setup-flutter@v3  
29 - with:  
30 - channel: stable  
31 - version: latest  
32 -  
33 - - uses: dart-lang/setup-dart@v1  
34 -  
35 - name: Fix version 27 - name: Fix version
36 shell: bash 28 shell: bash
37 run: | 29 run: |
@@ -104,6 +96,14 @@ jobs: @@ -104,6 +96,14 @@ jobs:
104 96
105 ls -lh /tmp/to_be_published/linux 97 ls -lh /tmp/to_be_published/linux
106 98
  99 + - name: Setup Flutter SDK
  100 + uses: flutter-actions/setup-flutter@v3
  101 + with:
  102 + channel: stable
  103 + version: latest
  104 +
  105 + - uses: dart-lang/setup-dart@v1
  106 +
107 - name: Release 107 - name: Release
108 shell: bash 108 shell: bash
109 run: | 109 run: |
@@ -127,14 +127,6 @@ jobs: @@ -127,14 +127,6 @@ jobs:
127 with: 127 with:
128 key: ${{ matrix.os }}-flutter-release-package 128 key: ${{ matrix.os }}-flutter-release-package
129 129
130 - - name: Setup Flutter SDK  
131 - uses: flutter-actions/setup-flutter@v3  
132 - with:  
133 - channel: stable  
134 - version: latest  
135 -  
136 - - uses: dart-lang/setup-dart@v1  
137 -  
138 - name: Fix version 130 - name: Fix version
139 shell: bash 131 shell: bash
140 run: | 132 run: |
@@ -205,6 +197,14 @@ jobs: @@ -205,6 +197,14 @@ jobs:
205 197
206 ls -lh /tmp/to_be_published/macos 198 ls -lh /tmp/to_be_published/macos
207 199
  200 + - name: Setup Flutter SDK
  201 + uses: flutter-actions/setup-flutter@v3
  202 + with:
  203 + channel: stable
  204 + version: latest
  205 +
  206 + - uses: dart-lang/setup-dart@v1
  207 +
208 - name: Release 208 - name: Release
209 shell: bash 209 shell: bash
210 run: | 210 run: |
@@ -429,8 +429,89 @@ jobs: @@ -429,8 +429,89 @@ jobs:
429 flutter pub publish --dry-run 429 flutter pub publish --dry-run
430 flutter pub publish --force 430 flutter pub publish --force
431 431
  432 + sherpa_onnx_ios:
  433 + # if: false
  434 + permissions:
  435 + id-token: write # Required for authentication using OIDC
  436 + name: sherpa_onnx_ios
  437 + runs-on: macos-latest
  438 +
  439 + steps:
  440 + - uses: actions/checkout@v4
  441 +
  442 + - name: ccache
  443 + uses: hendrikmuhs/ccache-action@v1.2
  444 + with:
  445 + key: ${{ matrix.os }}-flutter-release-package-ios
  446 +
  447 + - name: Fix version
  448 + shell: bash
  449 + run: |
  450 + SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2)
  451 +
  452 + src_dir=$PWD/flutter/sherpa_onnx_ios
  453 + pushd $src_dir
  454 + v="version: $SHERPA_ONNX_VERSION"
  455 + echo "v: $v"
  456 + sed -i.bak s"/^version: .*/$v/" ./pubspec.yaml
  457 + rm *.bak
  458 + git status
  459 + git diff
  460 +
  461 + - name: Copy extra files
  462 + shell: bash
  463 + run: |
  464 + dst=flutter/sherpa_onnx_ios
  465 +
  466 + mkdir $dst/example
  467 +
  468 + cp -v flutter/sherpa_onnx/example/* $dst/example
  469 + cp -v LICENSE $dst/
  470 + cp -v CHANGELOG.md $dst/
  471 +
  472 + git status
  473 +
  474 + - name: Build ios
  475 + shell: bash
  476 + run: |
  477 + export CMAKE_CXX_COMPILER_LAUNCHER=ccache
  478 + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
  479 + cmake --version
  480 + ./build-ios-shared.sh
  481 +
  482 + - name: Copy pre-built libs
  483 + shell: bash
  484 + run: |
  485 + echo "----ios-arm64----"
  486 + cp -v build-ios-shared/ios-arm64/libsherpa-onnx-c-api.dylib flutter/sherpa_onnx_ios/ios/
  487 + cp -v build-ios-shared/ios-onnxruntime/onnxruntime.xcframework/ios-arm64/onnxruntime.a flutter/sherpa_onnx_ios/ios/libonnxruntime.a
  488 +
  489 + ls -lh flutter/sherpa_onnx_ios/ios/libonnxruntime.a
  490 +
  491 + mv -v flutter/sherpa_onnx_ios /tmp/to_be_published
  492 +
  493 + ls -lh /tmp/to_be_published
  494 +
  495 + - name: Setup Flutter SDK
  496 + uses: flutter-actions/setup-flutter@v3
  497 + with:
  498 + channel: stable
  499 + version: latest
  500 +
  501 + - uses: dart-lang/setup-dart@v1
  502 +
  503 + - name: Release
  504 + shell: bash
  505 + run: |
  506 + cd /tmp/to_be_published
  507 + du -h -d1 .
  508 +
  509 + flutter pub get
  510 + flutter pub publish --dry-run
  511 + flutter pub publish --force
  512 +
432 sherpa_onnx: 513 sherpa_onnx:
433 - # needs: [sherpa_onnx_linux, sherpa_onnx_macos, sherpa_onnx_windows, sherpa_onnx_android] 514 + needs: [sherpa_onnx_linux, sherpa_onnx_macos, sherpa_onnx_windows, sherpa_onnx_android, sherpa_onnx_ios]
434 # if: false 515 # if: false
435 permissions: 516 permissions:
436 id-token: write # Required for authentication using OIDC 517 id-token: write # Required for authentication using OIDC
@@ -109,3 +109,4 @@ sherpa-onnx-vits-* @@ -109,3 +109,4 @@ sherpa-onnx-vits-*
109 sherpa-onnx-telespeech-ctc-* 109 sherpa-onnx-telespeech-ctc-*
110 *.fst 110 *.fst
111 .ccache 111 .ccache
  112 +lib*.a
  1 +## 1.10.11
  2 +
  3 +* Support the iOS platform for iOS.
  4 +
1 ## 1.10.10 5 ## 1.10.10
2 6
3 * Build sherpa-onnx into a single shared library. 7 * Build sherpa-onnx into a single shared library.
@@ -11,7 +11,7 @@ project(sherpa-onnx) @@ -11,7 +11,7 @@ project(sherpa-onnx)
11 # ./nodejs-addon-examples 11 # ./nodejs-addon-examples
12 # ./dart-api-examples/ 12 # ./dart-api-examples/
13 # ./sherpa-onnx/flutter/CHANGELOG.md 13 # ./sherpa-onnx/flutter/CHANGELOG.md
14 -set(SHERPA_ONNX_VERSION "1.10.10") 14 +set(SHERPA_ONNX_VERSION "1.10.11")
15 15
16 # Disable warning about 16 # Disable warning about
17 # 17 #
  1 +#!/usr/bin/env bash
  2 +#
  3 +# Note: This script is to build sherpa-onnx for flutter/dart, which requires
  4 +# us to use shared libraries for sherpa-onnx.
  5 +#
  6 +# Note: We still use static libraries for onnxruntime.
  7 +
  8 +set -e
  9 +
  10 +dir=build-ios-shared
  11 +mkdir -p $dir
  12 +cd $dir
  13 +onnxruntime_version=1.17.1
  14 +onnxruntime_dir=ios-onnxruntime/$onnxruntime_version
  15 +
  16 +SHERPA_ONNX_GITHUB=github.com
  17 +
  18 +if [ "$SHERPA_ONNX_GITHUB_MIRROW" == true ]; then
  19 + SHERPA_ONNX_GITHUB=hub.nuaa.cf
  20 +fi
  21 +
  22 +if [ ! -f $onnxruntime_dir/onnxruntime.xcframework/ios-arm64/onnxruntime.a ]; then
  23 + mkdir -p $onnxruntime_dir
  24 + pushd $onnxruntime_dir
  25 + wget -c https://${SHERPA_ONNX_GITHUB}/csukuangfj/onnxruntime-libs/releases/download/v${onnxruntime_version}/onnxruntime.xcframework-${onnxruntime_version}.tar.bz2
  26 + tar xvf onnxruntime.xcframework-${onnxruntime_version}.tar.bz2
  27 + rm onnxruntime.xcframework-${onnxruntime_version}.tar.bz2
  28 + cd ..
  29 + ln -sf $onnxruntime_version/onnxruntime.xcframework .
  30 + popd
  31 +fi
  32 +
  33 +# First, for simulator
  34 +echo "Building for simulator (x86_64)"
  35 +
  36 +export SHERPA_ONNXRUNTIME_LIB_DIR=$PWD/ios-onnxruntime/onnxruntime.xcframework/ios-arm64_x86_64-simulator
  37 +export SHERPA_ONNXRUNTIME_INCLUDE_DIR=$PWD/ios-onnxruntime/onnxruntime.xcframework/Headers
  38 +
  39 +echo "SHERPA_ONNXRUNTIME_LIB_DIR: $SHERPA_ONNXRUNTIME_LIB_DIR"
  40 +echo "SHERPA_ONNXRUNTIME_INCLUDE_DIR $SHERPA_ONNXRUNTIME_INCLUDE_DIR"
  41 +
  42 +# Note: We use -DENABLE_ARC=1 here to fix the linking error:
  43 +#
  44 +# The symbol _NSLog is not defined
  45 +#
  46 +if [[ ! -f build/simulator_x86_64/install/lib/libsherpa-onnx-c-api.dylib ]]; then
  47 + cmake \
  48 + -DSHERPA_ONNX_ENABLE_BINARY=OFF \
  49 + -DBUILD_PIPER_PHONMIZE_EXE=OFF \
  50 + -DBUILD_PIPER_PHONMIZE_TESTS=OFF \
  51 + -DBUILD_ESPEAK_NG_EXE=OFF \
  52 + -DBUILD_ESPEAK_NG_TESTS=OFF \
  53 + -S .. \
  54 + -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \
  55 + -DPLATFORM=SIMULATOR64 \
  56 + -DENABLE_BITCODE=0 \
  57 + -DENABLE_ARC=1 \
  58 + -DENABLE_VISIBILITY=1 \
  59 + -DCMAKE_BUILD_TYPE=Release \
  60 + -DCMAKE_INSTALL_PREFIX=./build/simulator_x86_64/install \
  61 + -DBUILD_SHARED_LIBS=ON \
  62 + -DSHERPA_ONNX_ENABLE_PYTHON=OFF \
  63 + -DSHERPA_ONNX_ENABLE_TESTS=OFF \
  64 + -DSHERPA_ONNX_ENABLE_CHECK=OFF \
  65 + -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
  66 + -DSHERPA_ONNX_ENABLE_JNI=OFF \
  67 + -DSHERPA_ONNX_ENABLE_C_API=ON \
  68 + -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
  69 + -DDEPLOYMENT_TARGET=13.0 \
  70 + -B build/simulator_x86_64
  71 +
  72 + cmake --build build/simulator_x86_64 -j 4 --target install
  73 +fi
  74 +
  75 +echo "Building for simulator (arm64)"
  76 +
  77 +if [[ ! -f build/simulator_arm64/install/lib/libsherpa-onnx-c-api.dylib ]]; then
  78 + cmake \
  79 + -DSHERPA_ONNX_ENABLE_BINARY=OFF \
  80 + -DBUILD_PIPER_PHONMIZE_EXE=OFF \
  81 + -DBUILD_PIPER_PHONMIZE_TESTS=OFF \
  82 + -DBUILD_ESPEAK_NG_EXE=OFF \
  83 + -DBUILD_ESPEAK_NG_TESTS=OFF \
  84 + -S .. \
  85 + -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \
  86 + -DPLATFORM=SIMULATORARM64 \
  87 + -DENABLE_BITCODE=0 \
  88 + -DENABLE_ARC=1 \
  89 + -DENABLE_VISIBILITY=1 \
  90 + -DCMAKE_BUILD_TYPE=Release \
  91 + -DCMAKE_INSTALL_PREFIX=./build/simulator_arm64/install \
  92 + -DBUILD_SHARED_LIBS=ON \
  93 + -DSHERPA_ONNX_ENABLE_PYTHON=OFF \
  94 + -DSHERPA_ONNX_ENABLE_TESTS=OFF \
  95 + -DSHERPA_ONNX_ENABLE_CHECK=OFF \
  96 + -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
  97 + -DSHERPA_ONNX_ENABLE_JNI=OFF \
  98 + -DSHERPA_ONNX_ENABLE_C_API=ON \
  99 + -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
  100 + -DDEPLOYMENT_TARGET=13.0 \
  101 + -B build/simulator_arm64
  102 +
  103 + cmake --build build/simulator_arm64 -j 4 --target install
  104 +fi
  105 +
  106 +echo "Building for arm64"
  107 +
  108 +if [[ ! -f build/os64/install/lib/libsherpa-onnx-c-api.dylib ]]; then
  109 + export SHERPA_ONNXRUNTIME_LIB_DIR=$PWD/ios-onnxruntime/onnxruntime.xcframework/ios-arm64
  110 +
  111 + cmake \
  112 + -DSHERPA_ONNX_ENABLE_BINARY=OFF \
  113 + -DBUILD_PIPER_PHONMIZE_EXE=OFF \
  114 + -DBUILD_PIPER_PHONMIZE_TESTS=OFF \
  115 + -DBUILD_ESPEAK_NG_EXE=OFF \
  116 + -DBUILD_ESPEAK_NG_TESTS=OFF \
  117 + -S .. \
  118 + -DCMAKE_TOOLCHAIN_FILE=./toolchains/ios.toolchain.cmake \
  119 + -DPLATFORM=OS64 \
  120 + -DENABLE_BITCODE=0 \
  121 + -DENABLE_ARC=1 \
  122 + -DENABLE_VISIBILITY=1 \
  123 + -DCMAKE_BUILD_TYPE=Release \
  124 + -DCMAKE_INSTALL_PREFIX=./build/os64/install \
  125 + -DBUILD_SHARED_LIBS=ON \
  126 + -DSHERPA_ONNX_ENABLE_PYTHON=OFF \
  127 + -DSHERPA_ONNX_ENABLE_TESTS=OFF \
  128 + -DSHERPA_ONNX_ENABLE_CHECK=OFF \
  129 + -DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
  130 + -DSHERPA_ONNX_ENABLE_JNI=OFF \
  131 + -DSHERPA_ONNX_ENABLE_C_API=ON \
  132 + -DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
  133 + -DDEPLOYMENT_TARGET=13.0 \
  134 + -B build/os64
  135 +
  136 + cmake --build build/os64 -j 4 --target install
  137 +fi
  138 +
  139 +echo "Collect dynamic libraries "
  140 +mkdir -p ios-arm64 ios-arm64-simulator ios-x86_64-simulator
  141 +
  142 +cp -v ./build/os64/install/lib/libsherpa-onnx-c-api.dylib ios-arm64/
  143 +cp -v ./build/simulator_arm64/install/lib/libsherpa-onnx-c-api.dylib ios-arm64-simulator
  144 +cp -v .//build/simulator_x86_64/install/lib/libsherpa-onnx-c-api.dylib ios-x86_64-simulator
@@ -10,7 +10,7 @@ environment: @@ -10,7 +10,7 @@ environment:
10 10
11 # Add regular dependencies here. 11 # Add regular dependencies here.
12 dependencies: 12 dependencies:
13 - sherpa_onnx: ^1.10.10 13 + sherpa_onnx: ^1.10.11
14 path: ^1.9.0 14 path: ^1.9.0
15 args: ^2.5.0 15 args: ^2.5.0
16 16
@@ -11,7 +11,7 @@ environment: @@ -11,7 +11,7 @@ environment:
11 11
12 # Add regular dependencies here. 12 # Add regular dependencies here.
13 dependencies: 13 dependencies:
14 - sherpa_onnx: ^1.10.10 14 + sherpa_onnx: ^1.10.11
15 path: ^1.9.0 15 path: ^1.9.0
16 args: ^2.5.0 16 args: ^2.5.0
17 17
@@ -8,7 +8,7 @@ environment: @@ -8,7 +8,7 @@ environment:
8 8
9 # Add regular dependencies here. 9 # Add regular dependencies here.
10 dependencies: 10 dependencies:
11 - sherpa_onnx: ^1.10.10 11 + sherpa_onnx: ^1.10.11
12 path: ^1.9.0 12 path: ^1.9.0
13 args: ^2.5.0 13 args: ^2.5.0
14 14
@@ -9,7 +9,7 @@ environment: @@ -9,7 +9,7 @@ environment:
9 sdk: ^3.4.0 9 sdk: ^3.4.0
10 10
11 dependencies: 11 dependencies:
12 - sherpa_onnx: ^1.10.10 12 + sherpa_onnx: ^1.10.11
13 path: ^1.9.0 13 path: ^1.9.0
14 args: ^2.5.0 14 args: ^2.5.0
15 15
@@ -123,3 +123,225 @@ index 536165d3..9b1a1012 100644 @@ -123,3 +123,225 @@ index 536165d3..9b1a1012 100644
123 id "org.jetbrains.kotlin.android" version "1.7.10" apply false 123 id "org.jetbrains.kotlin.android" version "1.7.10" apply false
124 } 124 }
125 ``` 125 ```
  126 +
  127 +# ios
  128 +
  129 +To support ios, run
  130 +
  131 +```bash
  132 +cd streaming_asr
  133 +flutter create --platforms ios ./
  134 +```
  135 +
  136 +Connect your iPhone to the computer, and run `flutter devices`, which will print:
  137 +
  138 +```bash
  139 +Found 3 connected devices:
  140 + iPhone (mobile) • 00008030-001064212E85802E • ios • iOS 16.3 20D47
  141 + macOS (desktop) • macos • darwin-x64 • macOS 13.1 22C65 darwin-x64
  142 + Chrome (web) • chrome • web-javascript • Google Chrome 126.0.6478.127
  143 +
  144 +No wireless devices were found.
  145 +
  146 +Run "flutter emulators" to list and start any available device emulators.
  147 +
  148 +If you expected another device to be detected, please run "flutter doctor" to diagnose potential issues. You may also try increasing the time to wait
  149 +for connected devices with the "--device-timeout" flag. Visit https://flutter.dev/setup/ for troubleshooting tips.
  150 +```
  151 +
  152 +Then run
  153 +
  154 +```bash
  155 +flutter run -d 00008030-001064212E85802E
  156 +```
  157 +
  158 +It will show:
  159 +```
  160 +Launching lib/main.dart on iPhone in debug mode...
  161 +════════════════════════════════════════════════════════════════════════════════
  162 +No valid code signing certificates were found
  163 +You can connect to your Apple Developer account by signing in with your Apple ID
  164 +in Xcode and create an iOS Development Certificate as well as a Provisioning
  165 +Profile for your project by:
  166 + 1- Open the Flutter project's Xcode target with
  167 + open ios/Runner.xcworkspace
  168 + 2- Select the 'Runner' project in the navigator then the 'Runner' target
  169 + in the project settings
  170 + 3- Make sure a 'Development Team' is selected under Signing & Capabilities > Team.
  171 + You may need to:
  172 + - Log in with your Apple ID in Xcode first
  173 + - Ensure you have a valid unique Bundle ID
  174 + - Register your device with your Apple Developer Account
  175 + - Let Xcode automatically provision a profile for your app
  176 + 4- Build or run your project again
  177 + 5- Trust your newly created Development Certificate on your iOS device
  178 + via Settings > General > Device Management > [your new certificate] > Trust
  179 +
  180 +For more information, please visit:
  181 + https://developer.apple.com/library/content/documentation/IDEs/Conceptual/
  182 + AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html
  183 +
  184 +Or run on an iOS simulator without code signing
  185 +════════════════════════════════════════════════════════════════════════════════
  186 +Error: No development certificates available to code sign app for device deployment
  187 +```
  188 +
  189 +Follow the above instructions.
  190 +
  191 +The following is a screenshot.
  192 +
  193 +![](./ios-demo-1.jpg)
  194 +
  195 +Then close `xcode` and run again
  196 +
  197 +```bash
  198 +flutter run -d 00008030-001064212E85802E
  199 +```
  200 +
  201 +You would get the following errors:
  202 +```
  203 +Error (Xcode): Undefined symbol: ___cxa_pure_virtual
  204 +
  205 +
  206 +Error (Xcode): Undefined symbol: ___cxa_throw
  207 +
  208 +
  209 +Error (Xcode): Undefined symbol: ___gxx_personality_v0
  210 +
  211 +
  212 +
  213 +Error launching application on iPhone.
  214 +```
  215 +
  216 +Make the following changes:
  217 +
  218 +```diff
  219 +diff --git a/flutter-examples/streaming_asr/ios/Runner.xcodeproj/project.pbxproj b/flutter-examples/streaming_asr/ios/Runner.xcodeproj/project.pbxproj
  220 +index b208c7e9..466b0afb 100644
  221 +--- a/flutter-examples/streaming_asr/ios/Runner.xcodeproj/project.pbxproj
  222 ++++ b/flutter-examples/streaming_asr/ios/Runner.xcodeproj/project.pbxproj
  223 +@@ -482,6 +482,7 @@
  224 + PRODUCT_NAME = "$(TARGET_NAME)";
  225 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  226 + SWIFT_VERSION = 5.0;
  227 ++ OTHER_LDFLAGS = "-lc++";
  228 + VERSIONING_SYSTEM = "apple-generic";
  229 + };
  230 + name = Profile;
  231 +@@ -500,6 +501,7 @@
  232 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
  233 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  234 + SWIFT_VERSION = 5.0;
  235 ++ OTHER_LDFLAGS = "-lc++";
  236 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  237 + };
  238 + name = Debug;
  239 +@@ -516,6 +518,7 @@
  240 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr.RunnerTests;
  241 + PRODUCT_NAME = "$(TARGET_NAME)";
  242 + SWIFT_VERSION = 5.0;
  243 ++ OTHER_LDFLAGS = "-lc++";
  244 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  245 + };
  246 + name = Release;
  247 +@@ -532,6 +535,7 @@
  248 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr.RunnerTests;
  249 + PRODUCT_NAME = "$(TARGET_NAME)";
  250 + SWIFT_VERSION = 5.0;
  251 ++ OTHER_LDFLAGS = "-lc++";
  252 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  253 + };
  254 + name = Profile;
  255 +@@ -666,6 +670,7 @@
  256 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  257 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  258 + SWIFT_VERSION = 5.0;
  259 ++ OTHER_LDFLAGS = "-lc++";
  260 + VERSIONING_SYSTEM = "apple-generic";
  261 + };
  262 + name = Debug;
  263 +@@ -688,6 +693,7 @@
  264 + PRODUCT_NAME = "$(TARGET_NAME)";
  265 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  266 + SWIFT_VERSION = 5.0;
  267 ++ OTHER_LDFLAGS = "-lc++";
  268 + VERSIONING_SYSTEM = "apple-generic";
  269 + };
  270 + name = Release;
  271 +```
  272 +
  273 +Then re-run
  274 +
  275 +```bash
  276 +flutter run -d 00008030-001064212E85802E
  277 +```
  278 +
  279 +Finally, it shows the following:
  280 +
  281 +```
  282 +Launching lib/main.dart on iPhone in debug mode...
  283 +Automatically signing iOS for device deployment using specified development team in Xcode project: N5ZH3Z63A6
  284 +Running Xcode build...
  285 + └─Compiling, linking and signing... 9.0s
  286 +Xcode build done. 25.6s
  287 +(lldb) 2024-07-06 17:43:54.970077+0800 Runner[4851:965716] [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)")
  288 +Warning: Unable to create restoration in progress marker file
  289 +fopen failed for data file: errno = 2 (No such file or directory)
  290 +Errors found! Invalidating cache...
  291 +fopen failed for data file: errno = 2 (No such file or directory)
  292 +Errors found! Invalidating cache...
  293 +Installing and launching... 31.8s
  294 +Syncing files to device iPhone... 1,080ms
  295 +
  296 +Flutter run key commands.
  297 +r Hot reload. 🔥🔥🔥
  298 +R Hot restart.
  299 +h List all available interactive commands.
  300 +d Detach (terminate "flutter run" but leave application running).
  301 +c Clear the screen
  302 +q Quit (terminate the application on the device).
  303 +
  304 +A Dart VM Service on iPhone is available at: http://127.0.0.1:51556/QDn_7CJ2gzk=/
  305 +The Flutter DevTools debugger and profiler on iPhone is available at: http://127.0.0.1:9100?uri=http://127.0.0.1:51556/QDn_7CJ2gzk=/
  306 +```
  307 +
  308 +If it shows the following log after pressing `start` within the sherpa-onnx APP on your iPhone:
  309 +
  310 +```
  311 +[access] This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSMicrophoneUsageDescription key with a string value explaining to the user how the app uses this data.
  312 +```
  313 +
  314 +Please make the following changes
  315 +```diff
  316 +--- a/flutter-examples/streaming_asr/ios/Runner/Info.plist
  317 ++++ b/flutter-examples/streaming_asr/ios/Runner/Info.plist
  318 +@@ -2,6 +2,8 @@
  319 + <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  320 + <plist version="1.0">
  321 + <dict>
  322 ++ <key>NSMicrophoneUsageDescription</key>
  323 ++ <string>Need microphone access for recording speech</string>
  324 + <key>CFBundleDevelopmentRegion</key>
  325 + <string>$(DEVELOPMENT_LANGUAGE)</string>
  326 + <key>CFBundleDisplayName</key>
  327 +```
  328 +
  329 +And re-run
  330 +
  331 +```bash
  332 +flutter run -d 00008030-001064212E85802E
  333 +```
  334 +
  335 +The following are some screenshots of the iOS APP:
  336 +
  337 +|1|2|3|
  338 +|---|---|---|
  339 +|![](./ios-demo-2.jpg)|![](./ios-demo-3.jpg)|![](./ios-demo-4.jpg)|
  340 +
  341 +
  342 +**Hint**: If you find that you cannot start the APP on your iPhone after
  343 +disconnecting from the computer, please use
  344 +
  345 +```bash
  346 +flutter run --release -d 00008030-001064212E85802E
  347 +```
1 -# streaming_asr 1 +# Real-time speech recognition
2 2
3 -A new Flutter project. 3 +This APP supports the following platforms:
  4 +
  5 + - Windows
  6 + - macOS
  7 + - Android
  8 + - iOS
  9 +
  10 +Note that it does not support Linux since we are using
  11 +the package [record](https://pub.dev/packages/record), which does not
  12 +support streaming recording on Linux.
  13 +
  14 +If you can find a recording package
  15 +that works on Linux, please let us know and we will update this app to support Linux.
4 16
5 ## Getting Started 17 ## Getting Started
6 18
7 -This project is a starting point for a Flutter application. 19 +Remember to use the following steps to download a model. Otherwise, you would
  20 +get errors after you start and run the app.
  21 +
  22 +### 1. Select a streaming model
  23 +
  24 +Please visit <https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models>
  25 +to download a streaming ASR model.
  26 +
  27 +You can find introductions about each streaming model at
  28 +<https://k2-fsa.github.io/sherpa/onnx/pretrained_models/index.html>
  29 +
  30 +
  31 +Note: `Streaming` is the same as `Online` in this context.
  32 +
  33 +### 2. Let the code know which model you are using
  34 +
  35 +We have pre-configured some streaming models in the following file
  36 +
  37 +<https://github.com/k2-fsa/sherpa-onnx/blob/master/flutter-examples/streaming_asr/lib/online_model.dart>
  38 +
  39 +If you select a model that is not in the above file, please add it to the above file
  40 +by yourself by following how existing models are added.
  41 +
  42 +Then you need to update
  43 +
  44 +<https://github.com/k2-fsa/sherpa-onnx/blob/master/flutter-examples/streaming_asr/lib/streaming_asr.dart#L16>
  45 +
  46 +```
  47 +final type = 0;
  48 +```
  49 +
  50 +Please change ``type`` accordingly.
  51 +
  52 +You also need to change [./pubspec.yaml](./pubspec.yaml) so that your APP knows where to find it.
  53 +Please see the example below for how to do that.
  54 +
  55 +### 3. Place your downloaded model inside the directory assets
  56 +
  57 +The downloaded model has to be placed in the [assets](./assets) directory.
  58 +
  59 +**HINT**: Please delete files that are not needed by the code. Otherwise, you put
  60 +unnecessary files in your APP and it will significantly increase the size of your APP.
  61 +
  62 +## Example
  63 +
  64 +Suppose you have selected the following model
  65 +
  66 +<https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2>
  67 +
  68 +Please use the following steps to make it available in your APP.
  69 +
  70 + - 1. Change [online_model.dart](./lib/online_model.dart)
  71 +
  72 + This model is already in the file and its type is `0`, so there is no need to change this file.
  73 +
  74 + - 2. Change [streaming_asr.dart](./lib/streaming_asr.dart)
  75 +
  76 + The default value for `type` is 0 and our model has also a type of `0`, so there is no need to change this file.
  77 +
  78 + - 3. Change [pubspec.yaml](./pubspec.yaml)
  79 +
  80 + At the end of [pubspec.yaml](./pubspec.yaml), please change it exactly like below:
  81 +
  82 +```
  83 + assets:
  84 + - assets/
  85 + - assets/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/
  86 +```
  87 +
  88 + - 4. Download the model to the [./assets](./assets) directory.
  89 +
  90 +```
  91 +cd assets
  92 +wget https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
  93 +tar xvf sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20.tar.bz2
  94 +
  95 +# Remeber to remove unused files.
  96 +rm -rf sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/test_wavs
  97 +rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/README.md
  98 +rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/bpe*
  99 +rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/encoder-epoch-99-avg-1.onnx
  100 +rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/decoder-epoch-99-avg-1.int8.onnx
  101 +rm sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20/joiner-epoch-99-avg-1.int8.onnx
  102 +```
  103 +
  104 +Your [assets](./assets) directory should look like below at the end.
  105 +
  106 +```
  107 +assets/
  108 +└── sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20
  109 + ├── decoder-epoch-99-avg-1.onnx
  110 + ├── encoder-epoch-99-avg-1.int8.onnx
  111 + ├── joiner-epoch-99-avg-1.onnx
  112 + └── tokens.txt
  113 +
  114 +1 directory, 4 files
  115 +```
  116 +
  117 + - 5. Run it!
8 118
9 -A few resources to get you started if this is your first Flutter project: 119 + For instance
10 120
11 -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)  
12 -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 121 + - `flutter run -d macos` for macOS.
13 122
14 -For help getting started with Flutter development, view the  
15 -[online documentation](https://docs.flutter.dev/), which offers tutorials,  
16 -samples, guidance on mobile development, and a full API reference. 123 + - `flutter run -d windows` for windows.
  1 +**/dgph
  2 +*.mode1v3
  3 +*.mode2v3
  4 +*.moved-aside
  5 +*.pbxuser
  6 +*.perspectivev3
  7 +**/*sync/
  8 +.sconsign.dblite
  9 +.tags*
  10 +**/.vagrant/
  11 +**/DerivedData/
  12 +Icon?
  13 +**/Pods/
  14 +**/.symlinks/
  15 +profile
  16 +xcuserdata
  17 +**/.generated/
  18 +Flutter/App.framework
  19 +Flutter/Flutter.framework
  20 +Flutter/Flutter.podspec
  21 +Flutter/Generated.xcconfig
  22 +Flutter/ephemeral/
  23 +Flutter/app.flx
  24 +Flutter/app.zip
  25 +Flutter/flutter_assets/
  26 +Flutter/flutter_export_environment.sh
  27 +ServiceDefinitions.json
  28 +Runner/GeneratedPluginRegistrant.*
  29 +
  30 +# Exceptions to above rules.
  31 +!default.mode1v3
  32 +!default.mode2v3
  33 +!default.pbxuser
  34 +!default.perspectivev3
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>en</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>App</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>io.flutter.flutter.app</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>App</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>FMWK</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>1.0</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>1.0</string>
  23 + <key>MinimumOSVersion</key>
  24 + <string>12.0</string>
  25 +</dict>
  26 +</plist>
  1 +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
  2 +#include "Generated.xcconfig"
  1 +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
  2 +#include "Generated.xcconfig"
  1 +# Uncomment this line to define a global platform for your project
  2 +# platform :ios, '12.0'
  3 +
  4 +# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
  5 +ENV['COCOAPODS_DISABLE_STATS'] = 'true'
  6 +
  7 +project 'Runner', {
  8 + 'Debug' => :debug,
  9 + 'Profile' => :release,
  10 + 'Release' => :release,
  11 +}
  12 +
  13 +def flutter_root
  14 + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  15 + unless File.exist?(generated_xcode_build_settings_path)
  16 + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  17 + end
  18 +
  19 + File.foreach(generated_xcode_build_settings_path) do |line|
  20 + matches = line.match(/FLUTTER_ROOT\=(.*)/)
  21 + return matches[1].strip if matches
  22 + end
  23 + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
  24 +end
  25 +
  26 +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
  27 +
  28 +flutter_ios_podfile_setup
  29 +
  30 +target 'Runner' do
  31 + use_frameworks!
  32 + use_modular_headers!
  33 +
  34 + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
  35 + target 'RunnerTests' do
  36 + inherit! :search_paths
  37 + end
  38 +end
  39 +
  40 +post_install do |installer|
  41 + installer.pods_project.targets.each do |target|
  42 + flutter_additional_ios_build_settings(target)
  43 + end
  44 +end
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 54;
  7 + objects = {
  8 +
  9 +/* Begin PBXBuildFile section */
  10 + 05D5EF72926AFE8B0BB8E849 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B422E1CC20F2C7BF721B8DEA /* Pods_Runner.framework */; };
  11 + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
  12 + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
  13 + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
  14 + 5A4BF2984B010F625045AEF9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD3E5A0B481F8C71365F9259 /* Pods_RunnerTests.framework */; };
  15 + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
  16 + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
  17 + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
  18 + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
  19 +/* End PBXBuildFile section */
  20 +
  21 +/* Begin PBXContainerItemProxy section */
  22 + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
  23 + isa = PBXContainerItemProxy;
  24 + containerPortal = 97C146E61CF9000F007C117D /* Project object */;
  25 + proxyType = 1;
  26 + remoteGlobalIDString = 97C146ED1CF9000F007C117D;
  27 + remoteInfo = Runner;
  28 + };
  29 +/* End PBXContainerItemProxy section */
  30 +
  31 +/* Begin PBXCopyFilesBuildPhase section */
  32 + 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
  33 + isa = PBXCopyFilesBuildPhase;
  34 + buildActionMask = 2147483647;
  35 + dstPath = "";
  36 + dstSubfolderSpec = 10;
  37 + files = (
  38 + );
  39 + name = "Embed Frameworks";
  40 + runOnlyForDeploymentPostprocessing = 0;
  41 + };
  42 +/* End PBXCopyFilesBuildPhase section */
  43 +
  44 +/* Begin PBXFileReference section */
  45 + 0AE88D6BF022DF2B961162B1 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
  46 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
  47 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
  48 + 18DE41FC48D4E4A22BB8396E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
  49 + 1FA6A3CB2526375DC4E7577F /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
  50 + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
  51 + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
  52 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
  53 + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
  54 + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
  55 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
  56 + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
  57 + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
  58 + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
  59 + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
  60 + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
  61 + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
  62 + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  63 + B422E1CC20F2C7BF721B8DEA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  64 + CD3E5A0B481F8C71365F9259 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
  65 + D39135D1BCA9F8B2E889A4A7 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
  66 + ECE8263C82D7A5EDCDD523B1 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
  67 + F2428E84328DFA24DFEF0A8B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
  68 +/* End PBXFileReference section */
  69 +
  70 +/* Begin PBXFrameworksBuildPhase section */
  71 + 370CDD7E022C5FF755B5EF47 /* Frameworks */ = {
  72 + isa = PBXFrameworksBuildPhase;
  73 + buildActionMask = 2147483647;
  74 + files = (
  75 + 5A4BF2984B010F625045AEF9 /* Pods_RunnerTests.framework in Frameworks */,
  76 + );
  77 + runOnlyForDeploymentPostprocessing = 0;
  78 + };
  79 + 97C146EB1CF9000F007C117D /* Frameworks */ = {
  80 + isa = PBXFrameworksBuildPhase;
  81 + buildActionMask = 2147483647;
  82 + files = (
  83 + 05D5EF72926AFE8B0BB8E849 /* Pods_Runner.framework in Frameworks */,
  84 + );
  85 + runOnlyForDeploymentPostprocessing = 0;
  86 + };
  87 +/* End PBXFrameworksBuildPhase section */
  88 +
  89 +/* Begin PBXGroup section */
  90 + 331C8082294A63A400263BE5 /* RunnerTests */ = {
  91 + isa = PBXGroup;
  92 + children = (
  93 + 331C807B294A618700263BE5 /* RunnerTests.swift */,
  94 + );
  95 + path = RunnerTests;
  96 + sourceTree = "<group>";
  97 + };
  98 + 50F577A9B451352B5312D8B8 /* Pods */ = {
  99 + isa = PBXGroup;
  100 + children = (
  101 + F2428E84328DFA24DFEF0A8B /* Pods-Runner.debug.xcconfig */,
  102 + 18DE41FC48D4E4A22BB8396E /* Pods-Runner.release.xcconfig */,
  103 + D39135D1BCA9F8B2E889A4A7 /* Pods-Runner.profile.xcconfig */,
  104 + 0AE88D6BF022DF2B961162B1 /* Pods-RunnerTests.debug.xcconfig */,
  105 + ECE8263C82D7A5EDCDD523B1 /* Pods-RunnerTests.release.xcconfig */,
  106 + 1FA6A3CB2526375DC4E7577F /* Pods-RunnerTests.profile.xcconfig */,
  107 + );
  108 + name = Pods;
  109 + path = Pods;
  110 + sourceTree = "<group>";
  111 + };
  112 + 9740EEB11CF90186004384FC /* Flutter */ = {
  113 + isa = PBXGroup;
  114 + children = (
  115 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
  116 + 9740EEB21CF90195004384FC /* Debug.xcconfig */,
  117 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
  118 + 9740EEB31CF90195004384FC /* Generated.xcconfig */,
  119 + );
  120 + name = Flutter;
  121 + sourceTree = "<group>";
  122 + };
  123 + 97C146E51CF9000F007C117D = {
  124 + isa = PBXGroup;
  125 + children = (
  126 + 9740EEB11CF90186004384FC /* Flutter */,
  127 + 97C146F01CF9000F007C117D /* Runner */,
  128 + 97C146EF1CF9000F007C117D /* Products */,
  129 + 331C8082294A63A400263BE5 /* RunnerTests */,
  130 + 50F577A9B451352B5312D8B8 /* Pods */,
  131 + D7A66A32065C41441BF0E0D3 /* Frameworks */,
  132 + );
  133 + sourceTree = "<group>";
  134 + };
  135 + 97C146EF1CF9000F007C117D /* Products */ = {
  136 + isa = PBXGroup;
  137 + children = (
  138 + 97C146EE1CF9000F007C117D /* Runner.app */,
  139 + 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
  140 + );
  141 + name = Products;
  142 + sourceTree = "<group>";
  143 + };
  144 + 97C146F01CF9000F007C117D /* Runner */ = {
  145 + isa = PBXGroup;
  146 + children = (
  147 + 97C146FA1CF9000F007C117D /* Main.storyboard */,
  148 + 97C146FD1CF9000F007C117D /* Assets.xcassets */,
  149 + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
  150 + 97C147021CF9000F007C117D /* Info.plist */,
  151 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
  152 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
  153 + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
  154 + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
  155 + );
  156 + path = Runner;
  157 + sourceTree = "<group>";
  158 + };
  159 + D7A66A32065C41441BF0E0D3 /* Frameworks */ = {
  160 + isa = PBXGroup;
  161 + children = (
  162 + B422E1CC20F2C7BF721B8DEA /* Pods_Runner.framework */,
  163 + CD3E5A0B481F8C71365F9259 /* Pods_RunnerTests.framework */,
  164 + );
  165 + name = Frameworks;
  166 + sourceTree = "<group>";
  167 + };
  168 +/* End PBXGroup section */
  169 +
  170 +/* Begin PBXNativeTarget section */
  171 + 331C8080294A63A400263BE5 /* RunnerTests */ = {
  172 + isa = PBXNativeTarget;
  173 + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
  174 + buildPhases = (
  175 + 05C536716C891AD06C35ACE8 /* [CP] Check Pods Manifest.lock */,
  176 + 331C807D294A63A400263BE5 /* Sources */,
  177 + 331C807F294A63A400263BE5 /* Resources */,
  178 + 370CDD7E022C5FF755B5EF47 /* Frameworks */,
  179 + );
  180 + buildRules = (
  181 + );
  182 + dependencies = (
  183 + 331C8086294A63A400263BE5 /* PBXTargetDependency */,
  184 + );
  185 + name = RunnerTests;
  186 + productName = RunnerTests;
  187 + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
  188 + productType = "com.apple.product-type.bundle.unit-test";
  189 + };
  190 + 97C146ED1CF9000F007C117D /* Runner */ = {
  191 + isa = PBXNativeTarget;
  192 + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
  193 + buildPhases = (
  194 + 7BF04CD64B1097AB8C6E66EA /* [CP] Check Pods Manifest.lock */,
  195 + 9740EEB61CF901F6004384FC /* Run Script */,
  196 + 97C146EA1CF9000F007C117D /* Sources */,
  197 + 97C146EB1CF9000F007C117D /* Frameworks */,
  198 + 97C146EC1CF9000F007C117D /* Resources */,
  199 + 9705A1C41CF9048500538489 /* Embed Frameworks */,
  200 + 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
  201 + E862F7828A330E975EF6E1F9 /* [CP] Embed Pods Frameworks */,
  202 + );
  203 + buildRules = (
  204 + );
  205 + dependencies = (
  206 + );
  207 + name = Runner;
  208 + productName = Runner;
  209 + productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
  210 + productType = "com.apple.product-type.application";
  211 + };
  212 +/* End PBXNativeTarget section */
  213 +
  214 +/* Begin PBXProject section */
  215 + 97C146E61CF9000F007C117D /* Project object */ = {
  216 + isa = PBXProject;
  217 + attributes = {
  218 + BuildIndependentTargetsInParallel = YES;
  219 + LastUpgradeCheck = 1510;
  220 + ORGANIZATIONNAME = "";
  221 + TargetAttributes = {
  222 + 331C8080294A63A400263BE5 = {
  223 + CreatedOnToolsVersion = 14.0;
  224 + TestTargetID = 97C146ED1CF9000F007C117D;
  225 + };
  226 + 97C146ED1CF9000F007C117D = {
  227 + CreatedOnToolsVersion = 7.3.1;
  228 + LastSwiftMigration = 1100;
  229 + };
  230 + };
  231 + };
  232 + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
  233 + compatibilityVersion = "Xcode 9.3";
  234 + developmentRegion = en;
  235 + hasScannedForEncodings = 0;
  236 + knownRegions = (
  237 + en,
  238 + Base,
  239 + );
  240 + mainGroup = 97C146E51CF9000F007C117D;
  241 + productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
  242 + projectDirPath = "";
  243 + projectRoot = "";
  244 + targets = (
  245 + 97C146ED1CF9000F007C117D /* Runner */,
  246 + 331C8080294A63A400263BE5 /* RunnerTests */,
  247 + );
  248 + };
  249 +/* End PBXProject section */
  250 +
  251 +/* Begin PBXResourcesBuildPhase section */
  252 + 331C807F294A63A400263BE5 /* Resources */ = {
  253 + isa = PBXResourcesBuildPhase;
  254 + buildActionMask = 2147483647;
  255 + files = (
  256 + );
  257 + runOnlyForDeploymentPostprocessing = 0;
  258 + };
  259 + 97C146EC1CF9000F007C117D /* Resources */ = {
  260 + isa = PBXResourcesBuildPhase;
  261 + buildActionMask = 2147483647;
  262 + files = (
  263 + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
  264 + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
  265 + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
  266 + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
  267 + );
  268 + runOnlyForDeploymentPostprocessing = 0;
  269 + };
  270 +/* End PBXResourcesBuildPhase section */
  271 +
  272 +/* Begin PBXShellScriptBuildPhase section */
  273 + 05C536716C891AD06C35ACE8 /* [CP] Check Pods Manifest.lock */ = {
  274 + isa = PBXShellScriptBuildPhase;
  275 + buildActionMask = 2147483647;
  276 + files = (
  277 + );
  278 + inputFileListPaths = (
  279 + );
  280 + inputPaths = (
  281 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  282 + "${PODS_ROOT}/Manifest.lock",
  283 + );
  284 + name = "[CP] Check Pods Manifest.lock";
  285 + outputFileListPaths = (
  286 + );
  287 + outputPaths = (
  288 + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
  289 + );
  290 + runOnlyForDeploymentPostprocessing = 0;
  291 + shellPath = /bin/sh;
  292 + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
  293 + showEnvVarsInLog = 0;
  294 + };
  295 + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
  296 + isa = PBXShellScriptBuildPhase;
  297 + alwaysOutOfDate = 1;
  298 + buildActionMask = 2147483647;
  299 + files = (
  300 + );
  301 + inputPaths = (
  302 + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
  303 + );
  304 + name = "Thin Binary";
  305 + outputPaths = (
  306 + );
  307 + runOnlyForDeploymentPostprocessing = 0;
  308 + shellPath = /bin/sh;
  309 + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
  310 + };
  311 + 7BF04CD64B1097AB8C6E66EA /* [CP] Check Pods Manifest.lock */ = {
  312 + isa = PBXShellScriptBuildPhase;
  313 + buildActionMask = 2147483647;
  314 + files = (
  315 + );
  316 + inputFileListPaths = (
  317 + );
  318 + inputPaths = (
  319 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  320 + "${PODS_ROOT}/Manifest.lock",
  321 + );
  322 + name = "[CP] Check Pods Manifest.lock";
  323 + outputFileListPaths = (
  324 + );
  325 + outputPaths = (
  326 + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
  327 + );
  328 + runOnlyForDeploymentPostprocessing = 0;
  329 + shellPath = /bin/sh;
  330 + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
  331 + showEnvVarsInLog = 0;
  332 + };
  333 + 9740EEB61CF901F6004384FC /* Run Script */ = {
  334 + isa = PBXShellScriptBuildPhase;
  335 + alwaysOutOfDate = 1;
  336 + buildActionMask = 2147483647;
  337 + files = (
  338 + );
  339 + inputPaths = (
  340 + );
  341 + name = "Run Script";
  342 + outputPaths = (
  343 + );
  344 + runOnlyForDeploymentPostprocessing = 0;
  345 + shellPath = /bin/sh;
  346 + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
  347 + };
  348 + E862F7828A330E975EF6E1F9 /* [CP] Embed Pods Frameworks */ = {
  349 + isa = PBXShellScriptBuildPhase;
  350 + buildActionMask = 2147483647;
  351 + files = (
  352 + );
  353 + inputFileListPaths = (
  354 + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
  355 + );
  356 + name = "[CP] Embed Pods Frameworks";
  357 + outputFileListPaths = (
  358 + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
  359 + );
  360 + runOnlyForDeploymentPostprocessing = 0;
  361 + shellPath = /bin/sh;
  362 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
  363 + showEnvVarsInLog = 0;
  364 + };
  365 +/* End PBXShellScriptBuildPhase section */
  366 +
  367 +/* Begin PBXSourcesBuildPhase section */
  368 + 331C807D294A63A400263BE5 /* Sources */ = {
  369 + isa = PBXSourcesBuildPhase;
  370 + buildActionMask = 2147483647;
  371 + files = (
  372 + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
  373 + );
  374 + runOnlyForDeploymentPostprocessing = 0;
  375 + };
  376 + 97C146EA1CF9000F007C117D /* Sources */ = {
  377 + isa = PBXSourcesBuildPhase;
  378 + buildActionMask = 2147483647;
  379 + files = (
  380 + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
  381 + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
  382 + );
  383 + runOnlyForDeploymentPostprocessing = 0;
  384 + };
  385 +/* End PBXSourcesBuildPhase section */
  386 +
  387 +/* Begin PBXTargetDependency section */
  388 + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
  389 + isa = PBXTargetDependency;
  390 + target = 97C146ED1CF9000F007C117D /* Runner */;
  391 + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
  392 + };
  393 +/* End PBXTargetDependency section */
  394 +
  395 +/* Begin PBXVariantGroup section */
  396 + 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
  397 + isa = PBXVariantGroup;
  398 + children = (
  399 + 97C146FB1CF9000F007C117D /* Base */,
  400 + );
  401 + name = Main.storyboard;
  402 + sourceTree = "<group>";
  403 + };
  404 + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
  405 + isa = PBXVariantGroup;
  406 + children = (
  407 + 97C147001CF9000F007C117D /* Base */,
  408 + );
  409 + name = LaunchScreen.storyboard;
  410 + sourceTree = "<group>";
  411 + };
  412 +/* End PBXVariantGroup section */
  413 +
  414 +/* Begin XCBuildConfiguration section */
  415 + 249021D3217E4FDB00AE95B9 /* Profile */ = {
  416 + isa = XCBuildConfiguration;
  417 + buildSettings = {
  418 + ALWAYS_SEARCH_USER_PATHS = NO;
  419 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  420 + CLANG_ANALYZER_NONNULL = YES;
  421 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  422 + CLANG_CXX_LIBRARY = "libc++";
  423 + CLANG_ENABLE_MODULES = YES;
  424 + CLANG_ENABLE_OBJC_ARC = YES;
  425 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  426 + CLANG_WARN_BOOL_CONVERSION = YES;
  427 + CLANG_WARN_COMMA = YES;
  428 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  429 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  430 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  431 + CLANG_WARN_EMPTY_BODY = YES;
  432 + CLANG_WARN_ENUM_CONVERSION = YES;
  433 + CLANG_WARN_INFINITE_RECURSION = YES;
  434 + CLANG_WARN_INT_CONVERSION = YES;
  435 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  436 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  437 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  438 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  439 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  440 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  441 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  442 + CLANG_WARN_UNREACHABLE_CODE = YES;
  443 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  444 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  445 + COPY_PHASE_STRIP = NO;
  446 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  447 + ENABLE_NS_ASSERTIONS = NO;
  448 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  449 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  450 + GCC_C_LANGUAGE_STANDARD = gnu99;
  451 + GCC_NO_COMMON_BLOCKS = YES;
  452 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  453 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  454 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  455 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  456 + GCC_WARN_UNUSED_FUNCTION = YES;
  457 + GCC_WARN_UNUSED_VARIABLE = YES;
  458 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  459 + MTL_ENABLE_DEBUG_INFO = NO;
  460 + SDKROOT = iphoneos;
  461 + SUPPORTED_PLATFORMS = iphoneos;
  462 + TARGETED_DEVICE_FAMILY = "1,2";
  463 + VALIDATE_PRODUCT = YES;
  464 + };
  465 + name = Profile;
  466 + };
  467 + 249021D4217E4FDB00AE95B9 /* Profile */ = {
  468 + isa = XCBuildConfiguration;
  469 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  470 + buildSettings = {
  471 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  472 + CLANG_ENABLE_MODULES = YES;
  473 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  474 + DEVELOPMENT_TEAM = N5ZH3Z63A6;
  475 + ENABLE_BITCODE = NO;
  476 + INFOPLIST_FILE = Runner/Info.plist;
  477 + LD_RUNPATH_SEARCH_PATHS = (
  478 + "$(inherited)",
  479 + "@executable_path/Frameworks",
  480 + );
  481 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr;
  482 + PRODUCT_NAME = "$(TARGET_NAME)";
  483 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  484 + SWIFT_VERSION = 5.0;
  485 + OTHER_LDFLAGS = "-lc++";
  486 + VERSIONING_SYSTEM = "apple-generic";
  487 + };
  488 + name = Profile;
  489 + };
  490 + 331C8088294A63A400263BE5 /* Debug */ = {
  491 + isa = XCBuildConfiguration;
  492 + baseConfigurationReference = 0AE88D6BF022DF2B961162B1 /* Pods-RunnerTests.debug.xcconfig */;
  493 + buildSettings = {
  494 + BUNDLE_LOADER = "$(TEST_HOST)";
  495 + CODE_SIGN_STYLE = Automatic;
  496 + CURRENT_PROJECT_VERSION = 1;
  497 + GENERATE_INFOPLIST_FILE = YES;
  498 + MARKETING_VERSION = 1.0;
  499 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr.RunnerTests;
  500 + PRODUCT_NAME = "$(TARGET_NAME)";
  501 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
  502 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  503 + SWIFT_VERSION = 5.0;
  504 + OTHER_LDFLAGS = "-lc++";
  505 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  506 + };
  507 + name = Debug;
  508 + };
  509 + 331C8089294A63A400263BE5 /* Release */ = {
  510 + isa = XCBuildConfiguration;
  511 + baseConfigurationReference = ECE8263C82D7A5EDCDD523B1 /* Pods-RunnerTests.release.xcconfig */;
  512 + buildSettings = {
  513 + BUNDLE_LOADER = "$(TEST_HOST)";
  514 + CODE_SIGN_STYLE = Automatic;
  515 + CURRENT_PROJECT_VERSION = 1;
  516 + GENERATE_INFOPLIST_FILE = YES;
  517 + MARKETING_VERSION = 1.0;
  518 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr.RunnerTests;
  519 + PRODUCT_NAME = "$(TARGET_NAME)";
  520 + SWIFT_VERSION = 5.0;
  521 + OTHER_LDFLAGS = "-lc++";
  522 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  523 + };
  524 + name = Release;
  525 + };
  526 + 331C808A294A63A400263BE5 /* Profile */ = {
  527 + isa = XCBuildConfiguration;
  528 + baseConfigurationReference = 1FA6A3CB2526375DC4E7577F /* Pods-RunnerTests.profile.xcconfig */;
  529 + buildSettings = {
  530 + BUNDLE_LOADER = "$(TEST_HOST)";
  531 + CODE_SIGN_STYLE = Automatic;
  532 + CURRENT_PROJECT_VERSION = 1;
  533 + GENERATE_INFOPLIST_FILE = YES;
  534 + MARKETING_VERSION = 1.0;
  535 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr.RunnerTests;
  536 + PRODUCT_NAME = "$(TARGET_NAME)";
  537 + SWIFT_VERSION = 5.0;
  538 + OTHER_LDFLAGS = "-lc++";
  539 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
  540 + };
  541 + name = Profile;
  542 + };
  543 + 97C147031CF9000F007C117D /* Debug */ = {
  544 + isa = XCBuildConfiguration;
  545 + buildSettings = {
  546 + ALWAYS_SEARCH_USER_PATHS = NO;
  547 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  548 + CLANG_ANALYZER_NONNULL = YES;
  549 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  550 + CLANG_CXX_LIBRARY = "libc++";
  551 + CLANG_ENABLE_MODULES = YES;
  552 + CLANG_ENABLE_OBJC_ARC = YES;
  553 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  554 + CLANG_WARN_BOOL_CONVERSION = YES;
  555 + CLANG_WARN_COMMA = YES;
  556 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  557 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  558 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  559 + CLANG_WARN_EMPTY_BODY = YES;
  560 + CLANG_WARN_ENUM_CONVERSION = YES;
  561 + CLANG_WARN_INFINITE_RECURSION = YES;
  562 + CLANG_WARN_INT_CONVERSION = YES;
  563 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  564 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  565 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  566 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  567 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  568 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  569 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  570 + CLANG_WARN_UNREACHABLE_CODE = YES;
  571 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  572 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  573 + COPY_PHASE_STRIP = NO;
  574 + DEBUG_INFORMATION_FORMAT = dwarf;
  575 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  576 + ENABLE_TESTABILITY = YES;
  577 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  578 + GCC_C_LANGUAGE_STANDARD = gnu99;
  579 + GCC_DYNAMIC_NO_PIC = NO;
  580 + GCC_NO_COMMON_BLOCKS = YES;
  581 + GCC_OPTIMIZATION_LEVEL = 0;
  582 + GCC_PREPROCESSOR_DEFINITIONS = (
  583 + "DEBUG=1",
  584 + "$(inherited)",
  585 + );
  586 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  587 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  588 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  589 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  590 + GCC_WARN_UNUSED_FUNCTION = YES;
  591 + GCC_WARN_UNUSED_VARIABLE = YES;
  592 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  593 + MTL_ENABLE_DEBUG_INFO = YES;
  594 + ONLY_ACTIVE_ARCH = YES;
  595 + SDKROOT = iphoneos;
  596 + TARGETED_DEVICE_FAMILY = "1,2";
  597 + };
  598 + name = Debug;
  599 + };
  600 + 97C147041CF9000F007C117D /* Release */ = {
  601 + isa = XCBuildConfiguration;
  602 + buildSettings = {
  603 + ALWAYS_SEARCH_USER_PATHS = NO;
  604 + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
  605 + CLANG_ANALYZER_NONNULL = YES;
  606 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  607 + CLANG_CXX_LIBRARY = "libc++";
  608 + CLANG_ENABLE_MODULES = YES;
  609 + CLANG_ENABLE_OBJC_ARC = YES;
  610 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  611 + CLANG_WARN_BOOL_CONVERSION = YES;
  612 + CLANG_WARN_COMMA = YES;
  613 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  614 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  615 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  616 + CLANG_WARN_EMPTY_BODY = YES;
  617 + CLANG_WARN_ENUM_CONVERSION = YES;
  618 + CLANG_WARN_INFINITE_RECURSION = YES;
  619 + CLANG_WARN_INT_CONVERSION = YES;
  620 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  621 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  622 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  623 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  624 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  625 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  626 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  627 + CLANG_WARN_UNREACHABLE_CODE = YES;
  628 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  629 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  630 + COPY_PHASE_STRIP = NO;
  631 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  632 + ENABLE_NS_ASSERTIONS = NO;
  633 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  634 + ENABLE_USER_SCRIPT_SANDBOXING = NO;
  635 + GCC_C_LANGUAGE_STANDARD = gnu99;
  636 + GCC_NO_COMMON_BLOCKS = YES;
  637 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  638 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  639 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  640 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  641 + GCC_WARN_UNUSED_FUNCTION = YES;
  642 + GCC_WARN_UNUSED_VARIABLE = YES;
  643 + IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  644 + MTL_ENABLE_DEBUG_INFO = NO;
  645 + SDKROOT = iphoneos;
  646 + SUPPORTED_PLATFORMS = iphoneos;
  647 + SWIFT_COMPILATION_MODE = wholemodule;
  648 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  649 + TARGETED_DEVICE_FAMILY = "1,2";
  650 + VALIDATE_PRODUCT = YES;
  651 + };
  652 + name = Release;
  653 + };
  654 + 97C147061CF9000F007C117D /* Debug */ = {
  655 + isa = XCBuildConfiguration;
  656 + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
  657 + buildSettings = {
  658 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  659 + CLANG_ENABLE_MODULES = YES;
  660 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  661 + DEVELOPMENT_TEAM = N5ZH3Z63A6;
  662 + ENABLE_BITCODE = NO;
  663 + INFOPLIST_FILE = Runner/Info.plist;
  664 + LD_RUNPATH_SEARCH_PATHS = (
  665 + "$(inherited)",
  666 + "@executable_path/Frameworks",
  667 + );
  668 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr;
  669 + PRODUCT_NAME = "$(TARGET_NAME)";
  670 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  671 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  672 + SWIFT_VERSION = 5.0;
  673 + OTHER_LDFLAGS = "-lc++";
  674 + VERSIONING_SYSTEM = "apple-generic";
  675 + };
  676 + name = Debug;
  677 + };
  678 + 97C147071CF9000F007C117D /* Release */ = {
  679 + isa = XCBuildConfiguration;
  680 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  681 + buildSettings = {
  682 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  683 + CLANG_ENABLE_MODULES = YES;
  684 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  685 + DEVELOPMENT_TEAM = N5ZH3Z63A6;
  686 + ENABLE_BITCODE = NO;
  687 + INFOPLIST_FILE = Runner/Info.plist;
  688 + LD_RUNPATH_SEARCH_PATHS = (
  689 + "$(inherited)",
  690 + "@executable_path/Frameworks",
  691 + );
  692 + PRODUCT_BUNDLE_IDENTIFIER = com.k2fsa.sherpa.onnx.streamingAsr;
  693 + PRODUCT_NAME = "$(TARGET_NAME)";
  694 + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
  695 + SWIFT_VERSION = 5.0;
  696 + OTHER_LDFLAGS = "-lc++";
  697 + VERSIONING_SYSTEM = "apple-generic";
  698 + };
  699 + name = Release;
  700 + };
  701 +/* End XCBuildConfiguration section */
  702 +
  703 +/* Begin XCConfigurationList section */
  704 + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
  705 + isa = XCConfigurationList;
  706 + buildConfigurations = (
  707 + 331C8088294A63A400263BE5 /* Debug */,
  708 + 331C8089294A63A400263BE5 /* Release */,
  709 + 331C808A294A63A400263BE5 /* Profile */,
  710 + );
  711 + defaultConfigurationIsVisible = 0;
  712 + defaultConfigurationName = Release;
  713 + };
  714 + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
  715 + isa = XCConfigurationList;
  716 + buildConfigurations = (
  717 + 97C147031CF9000F007C117D /* Debug */,
  718 + 97C147041CF9000F007C117D /* Release */,
  719 + 249021D3217E4FDB00AE95B9 /* Profile */,
  720 + );
  721 + defaultConfigurationIsVisible = 0;
  722 + defaultConfigurationName = Release;
  723 + };
  724 + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
  725 + isa = XCConfigurationList;
  726 + buildConfigurations = (
  727 + 97C147061CF9000F007C117D /* Debug */,
  728 + 97C147071CF9000F007C117D /* Release */,
  729 + 249021D4217E4FDB00AE95B9 /* Profile */,
  730 + );
  731 + defaultConfigurationIsVisible = 0;
  732 + defaultConfigurationName = Release;
  733 + };
  734 +/* End XCConfigurationList section */
  735 + };
  736 + rootObject = 97C146E61CF9000F007C117D /* Project object */;
  737 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "self:">
  6 + </FileRef>
  7 +</Workspace>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>PreviewsEnabled</key>
  6 + <false/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1510"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  18 + BuildableName = "Runner.app"
  19 + BlueprintName = "Runner"
  20 + ReferencedContainer = "container:Runner.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <MacroExpansion>
  31 + <BuildableReference
  32 + BuildableIdentifier = "primary"
  33 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  34 + BuildableName = "Runner.app"
  35 + BlueprintName = "Runner"
  36 + ReferencedContainer = "container:Runner.xcodeproj">
  37 + </BuildableReference>
  38 + </MacroExpansion>
  39 + <Testables>
  40 + <TestableReference
  41 + skipped = "NO"
  42 + parallelizable = "YES">
  43 + <BuildableReference
  44 + BuildableIdentifier = "primary"
  45 + BlueprintIdentifier = "331C8080294A63A400263BE5"
  46 + BuildableName = "RunnerTests.xctest"
  47 + BlueprintName = "RunnerTests"
  48 + ReferencedContainer = "container:Runner.xcodeproj">
  49 + </BuildableReference>
  50 + </TestableReference>
  51 + </Testables>
  52 + </TestAction>
  53 + <LaunchAction
  54 + buildConfiguration = "Debug"
  55 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  56 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  57 + launchStyle = "0"
  58 + useCustomWorkingDirectory = "NO"
  59 + ignoresPersistentStateOnLaunch = "NO"
  60 + debugDocumentVersioning = "YES"
  61 + debugServiceExtension = "internal"
  62 + allowLocationSimulation = "YES">
  63 + <BuildableProductRunnable
  64 + runnableDebuggingMode = "0">
  65 + <BuildableReference
  66 + BuildableIdentifier = "primary"
  67 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  68 + BuildableName = "Runner.app"
  69 + BlueprintName = "Runner"
  70 + ReferencedContainer = "container:Runner.xcodeproj">
  71 + </BuildableReference>
  72 + </BuildableProductRunnable>
  73 + </LaunchAction>
  74 + <ProfileAction
  75 + buildConfiguration = "Profile"
  76 + shouldUseLaunchSchemeArgsEnv = "YES"
  77 + savedToolIdentifier = ""
  78 + useCustomWorkingDirectory = "NO"
  79 + debugDocumentVersioning = "YES">
  80 + <BuildableProductRunnable
  81 + runnableDebuggingMode = "0">
  82 + <BuildableReference
  83 + BuildableIdentifier = "primary"
  84 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  85 + BuildableName = "Runner.app"
  86 + BlueprintName = "Runner"
  87 + ReferencedContainer = "container:Runner.xcodeproj">
  88 + </BuildableReference>
  89 + </BuildableProductRunnable>
  90 + </ProfileAction>
  91 + <AnalyzeAction
  92 + buildConfiguration = "Debug">
  93 + </AnalyzeAction>
  94 + <ArchiveAction
  95 + buildConfiguration = "Release"
  96 + revealArchiveInOrganizer = "YES">
  97 + </ArchiveAction>
  98 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "group:Runner.xcodeproj">
  6 + </FileRef>
  7 + <FileRef
  8 + location = "group:Pods/Pods.xcodeproj">
  9 + </FileRef>
  10 +</Workspace>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>PreviewsEnabled</key>
  6 + <false/>
  7 +</dict>
  8 +</plist>
  1 +import Flutter
  2 +import UIKit
  3 +
  4 +@UIApplicationMain
  5 +@objc class AppDelegate: FlutterAppDelegate {
  6 + override func application(
  7 + _ application: UIApplication,
  8 + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  9 + ) -> Bool {
  10 + GeneratedPluginRegistrant.register(with: self)
  11 + return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  12 + }
  13 +}
  1 +{
  2 + "images" : [
  3 + {
  4 + "size" : "20x20",
  5 + "idiom" : "iphone",
  6 + "filename" : "Icon-App-20x20@2x.png",
  7 + "scale" : "2x"
  8 + },
  9 + {
  10 + "size" : "20x20",
  11 + "idiom" : "iphone",
  12 + "filename" : "Icon-App-20x20@3x.png",
  13 + "scale" : "3x"
  14 + },
  15 + {
  16 + "size" : "29x29",
  17 + "idiom" : "iphone",
  18 + "filename" : "Icon-App-29x29@1x.png",
  19 + "scale" : "1x"
  20 + },
  21 + {
  22 + "size" : "29x29",
  23 + "idiom" : "iphone",
  24 + "filename" : "Icon-App-29x29@2x.png",
  25 + "scale" : "2x"
  26 + },
  27 + {
  28 + "size" : "29x29",
  29 + "idiom" : "iphone",
  30 + "filename" : "Icon-App-29x29@3x.png",
  31 + "scale" : "3x"
  32 + },
  33 + {
  34 + "size" : "40x40",
  35 + "idiom" : "iphone",
  36 + "filename" : "Icon-App-40x40@2x.png",
  37 + "scale" : "2x"
  38 + },
  39 + {
  40 + "size" : "40x40",
  41 + "idiom" : "iphone",
  42 + "filename" : "Icon-App-40x40@3x.png",
  43 + "scale" : "3x"
  44 + },
  45 + {
  46 + "size" : "60x60",
  47 + "idiom" : "iphone",
  48 + "filename" : "Icon-App-60x60@2x.png",
  49 + "scale" : "2x"
  50 + },
  51 + {
  52 + "size" : "60x60",
  53 + "idiom" : "iphone",
  54 + "filename" : "Icon-App-60x60@3x.png",
  55 + "scale" : "3x"
  56 + },
  57 + {
  58 + "size" : "20x20",
  59 + "idiom" : "ipad",
  60 + "filename" : "Icon-App-20x20@1x.png",
  61 + "scale" : "1x"
  62 + },
  63 + {
  64 + "size" : "20x20",
  65 + "idiom" : "ipad",
  66 + "filename" : "Icon-App-20x20@2x.png",
  67 + "scale" : "2x"
  68 + },
  69 + {
  70 + "size" : "29x29",
  71 + "idiom" : "ipad",
  72 + "filename" : "Icon-App-29x29@1x.png",
  73 + "scale" : "1x"
  74 + },
  75 + {
  76 + "size" : "29x29",
  77 + "idiom" : "ipad",
  78 + "filename" : "Icon-App-29x29@2x.png",
  79 + "scale" : "2x"
  80 + },
  81 + {
  82 + "size" : "40x40",
  83 + "idiom" : "ipad",
  84 + "filename" : "Icon-App-40x40@1x.png",
  85 + "scale" : "1x"
  86 + },
  87 + {
  88 + "size" : "40x40",
  89 + "idiom" : "ipad",
  90 + "filename" : "Icon-App-40x40@2x.png",
  91 + "scale" : "2x"
  92 + },
  93 + {
  94 + "size" : "76x76",
  95 + "idiom" : "ipad",
  96 + "filename" : "Icon-App-76x76@1x.png",
  97 + "scale" : "1x"
  98 + },
  99 + {
  100 + "size" : "76x76",
  101 + "idiom" : "ipad",
  102 + "filename" : "Icon-App-76x76@2x.png",
  103 + "scale" : "2x"
  104 + },
  105 + {
  106 + "size" : "83.5x83.5",
  107 + "idiom" : "ipad",
  108 + "filename" : "Icon-App-83.5x83.5@2x.png",
  109 + "scale" : "2x"
  110 + },
  111 + {
  112 + "size" : "1024x1024",
  113 + "idiom" : "ios-marketing",
  114 + "filename" : "Icon-App-1024x1024@1x.png",
  115 + "scale" : "1x"
  116 + }
  117 + ],
  118 + "info" : {
  119 + "version" : 1,
  120 + "author" : "xcode"
  121 + }
  122 +}
  1 +{
  2 + "images" : [
  3 + {
  4 + "idiom" : "universal",
  5 + "filename" : "LaunchImage.png",
  6 + "scale" : "1x"
  7 + },
  8 + {
  9 + "idiom" : "universal",
  10 + "filename" : "LaunchImage@2x.png",
  11 + "scale" : "2x"
  12 + },
  13 + {
  14 + "idiom" : "universal",
  15 + "filename" : "LaunchImage@3x.png",
  16 + "scale" : "3x"
  17 + }
  18 + ],
  19 + "info" : {
  20 + "version" : 1,
  21 + "author" : "xcode"
  22 + }
  23 +}
  1 +# Launch Screen Assets
  2 +
  3 +You can customize the launch screen with your own desired assets by replacing the image files in this directory.
  4 +
  5 +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
  3 + <dependencies>
  4 + <deployment identifier="iOS"/>
  5 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
  6 + </dependencies>
  7 + <scenes>
  8 + <!--View Controller-->
  9 + <scene sceneID="EHf-IW-A2E">
  10 + <objects>
  11 + <viewController id="01J-lp-oVM" sceneMemberID="viewController">
  12 + <layoutGuides>
  13 + <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
  14 + <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
  15 + </layoutGuides>
  16 + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
  17 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  18 + <subviews>
  19 + <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
  20 + </imageView>
  21 + </subviews>
  22 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  23 + <constraints>
  24 + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
  25 + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
  26 + </constraints>
  27 + </view>
  28 + </viewController>
  29 + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
  30 + </objects>
  31 + <point key="canvasLocation" x="53" y="375"/>
  32 + </scene>
  33 + </scenes>
  34 + <resources>
  35 + <image name="LaunchImage" width="168" height="185"/>
  36 + </resources>
  37 +</document>
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
  3 + <dependencies>
  4 + <deployment identifier="iOS"/>
  5 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
  6 + </dependencies>
  7 + <scenes>
  8 + <!--Flutter View Controller-->
  9 + <scene sceneID="tne-QT-ifu">
  10 + <objects>
  11 + <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
  12 + <layoutGuides>
  13 + <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
  14 + <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
  15 + </layoutGuides>
  16 + <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
  17 + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
  18 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  19 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
  20 + </view>
  21 + </viewController>
  22 + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
  23 + </objects>
  24 + </scene>
  25 + </scenes>
  26 +</document>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>NSMicrophoneUsageDescription</key>
  6 + <string>Need microphone access for recording speech</string>
  7 + <key>CFBundleDevelopmentRegion</key>
  8 + <string>$(DEVELOPMENT_LANGUAGE)</string>
  9 + <key>CFBundleDisplayName</key>
  10 + <string>Streaming Asr</string>
  11 + <key>CFBundleExecutable</key>
  12 + <string>$(EXECUTABLE_NAME)</string>
  13 + <key>CFBundleIdentifier</key>
  14 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  15 + <key>CFBundleInfoDictionaryVersion</key>
  16 + <string>6.0</string>
  17 + <key>CFBundleName</key>
  18 + <string>streaming_asr</string>
  19 + <key>CFBundlePackageType</key>
  20 + <string>APPL</string>
  21 + <key>CFBundleShortVersionString</key>
  22 + <string>$(FLUTTER_BUILD_NAME)</string>
  23 + <key>CFBundleSignature</key>
  24 + <string>????</string>
  25 + <key>CFBundleVersion</key>
  26 + <string>$(FLUTTER_BUILD_NUMBER)</string>
  27 + <key>LSRequiresIPhoneOS</key>
  28 + <true/>
  29 + <key>UILaunchStoryboardName</key>
  30 + <string>LaunchScreen</string>
  31 + <key>UIMainStoryboardFile</key>
  32 + <string>Main</string>
  33 + <key>UISupportedInterfaceOrientations</key>
  34 + <array>
  35 + <string>UIInterfaceOrientationPortrait</string>
  36 + <string>UIInterfaceOrientationLandscapeLeft</string>
  37 + <string>UIInterfaceOrientationLandscapeRight</string>
  38 + </array>
  39 + <key>UISupportedInterfaceOrientations~ipad</key>
  40 + <array>
  41 + <string>UIInterfaceOrientationPortrait</string>
  42 + <string>UIInterfaceOrientationPortraitUpsideDown</string>
  43 + <string>UIInterfaceOrientationLandscapeLeft</string>
  44 + <string>UIInterfaceOrientationLandscapeRight</string>
  45 + </array>
  46 + <key>CADisableMinimumFrameDurationOnPhone</key>
  47 + <true/>
  48 + <key>UIApplicationSupportsIndirectInputEvents</key>
  49 + <true/>
  50 +</dict>
  51 +</plist>
  1 +import Flutter
  2 +import UIKit
  3 +import XCTest
  4 +
  5 +class RunnerTests: XCTestCase {
  6 +
  7 + func testExample() {
  8 + // If you add code to the Runner application, consider adding tests here.
  9 + // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
  10 + }
  11 +
  12 +}
@@ -5,7 +5,7 @@ description: > @@ -5,7 +5,7 @@ description: >
5 5
6 publish_to: 'none' 6 publish_to: 'none'
7 7
8 -version: 1.10.10 8 +version: 1.10.11
9 9
10 topics: 10 topics:
11 - speech-recognition 11 - speech-recognition
@@ -30,7 +30,7 @@ dependencies: @@ -30,7 +30,7 @@ dependencies:
30 record: ^5.1.0 30 record: ^5.1.0
31 url_launcher: ^6.2.6 31 url_launcher: ^6.2.6
32 32
33 - sherpa_onnx: ^1.10.10 33 + sherpa_onnx: ^1.10.11
34 # sherpa_onnx: 34 # sherpa_onnx:
35 # path: ../../flutter/sherpa_onnx 35 # path: ../../flutter/sherpa_onnx
36 36
@@ -15,20 +15,26 @@ flutter create --template plugin sherpa_onnx @@ -15,20 +15,26 @@ flutter create --template plugin sherpa_onnx
15 flutter create --template plugin_ffi --platforms macos sherpa_onnx_macos 15 flutter create --template plugin_ffi --platforms macos sherpa_onnx_macos
16 ``` 16 ```
17 17
18 -3. Create `sherpa_onnx_linux 18 +3. Create `sherpa_onnx_linux`
19 19
20 ```bash 20 ```bash
21 flutter create --template plugin_ffi --platforms linux sherpa_onnx_linux 21 flutter create --template plugin_ffi --platforms linux sherpa_onnx_linux
22 ``` 22 ```
23 23
24 -4. Create `sherpa_onnx_windows 24 +4. Create `sherpa_onnx_windows`
25 25
26 ```bash 26 ```bash
27 flutter create --template plugin_ffi --platforms linux sherpa_onnx_windows 27 flutter create --template plugin_ffi --platforms linux sherpa_onnx_windows
28 ``` 28 ```
29 29
30 -5. Create `sherpa_onnx_android 30 +5. Create `sherpa_onnx_android`
31 31
32 ```bash 32 ```bash
33 flutter create --template plugin_ffi --platforms android --org com.k2fsa.sherpa.onnx sherpa_onnx_android 33 flutter create --template plugin_ffi --platforms android --org com.k2fsa.sherpa.onnx sherpa_onnx_android
34 ``` 34 ```
  35 +
  36 +6. Create `sherpa_onnx_ios`
  37 +
  38 +```bash
  39 +flutter create --template plugin_ffi --platforms ios sherpa_onnx_ios
  40 +```
@@ -19,11 +19,9 @@ String? _path; @@ -19,11 +19,9 @@ String? _path;
19 19
20 // see also 20 // see also
21 // https://github.com/flutter/codelabs/blob/main/ffigen_codelab/step_05/lib/ffigen_app.dart 21 // https://github.com/flutter/codelabs/blob/main/ffigen_codelab/step_05/lib/ffigen_app.dart
  22 +// https://api.flutter.dev/flutter/dart-io/Platform-class.html
22 final DynamicLibrary _dylib = () { 23 final DynamicLibrary _dylib = () {
23 - if (Platform.isIOS) {  
24 - throw UnsupportedError('Unknown platform: ${Platform.operatingSystem}');  
25 - }  
26 - if (Platform.isMacOS) { 24 + if (Platform.isMacOS || Platform.isIOS) {
27 if (_path == null) { 25 if (_path == null) {
28 return DynamicLibrary.open('libsherpa-onnx-c-api.dylib'); 26 return DynamicLibrary.open('libsherpa-onnx-c-api.dylib');
29 } else { 27 } else {
@@ -17,7 +17,7 @@ topics: @@ -17,7 +17,7 @@ topics:
17 - voice-activity-detection 17 - voice-activity-detection
18 18
19 # remember to change the version in ../sherpa_onnx_macos/macos/sherpa_onnx_macos.podspec 19 # remember to change the version in ../sherpa_onnx_macos/macos/sherpa_onnx_macos.podspec
20 -version: 1.10.10 20 +version: 1.10.11
21 21
22 homepage: https://github.com/k2-fsa/sherpa-onnx 22 homepage: https://github.com/k2-fsa/sherpa-onnx
23 23
@@ -30,24 +30,31 @@ dependencies: @@ -30,24 +30,31 @@ dependencies:
30 flutter: 30 flutter:
31 sdk: flutter 31 sdk: flutter
32 32
33 - sherpa_onnx_android: ^1.10.10 33 + sherpa_onnx_android: ^1.10.11
34 # path: ../sherpa_onnx_android 34 # path: ../sherpa_onnx_android
35 35
36 - sherpa_onnx_macos: ^1.10.10 36 + sherpa_onnx_macos: ^1.10.11
37 # path: ../sherpa_onnx_macos 37 # path: ../sherpa_onnx_macos
38 38
39 - sherpa_onnx_linux: ^1.10.10 39 + sherpa_onnx_linux: ^1.10.11
40 # path: ../sherpa_onnx_linux 40 # path: ../sherpa_onnx_linux
41 # 41 #
42 - sherpa_onnx_windows: ^1.10.10 42 + sherpa_onnx_windows: ^1.10.11
43 # path: ../sherpa_onnx_windows 43 # path: ../sherpa_onnx_windows
44 44
  45 + sherpa_onnx_ios: ^1.10.11
  46 + # sherpa_onnx_ios:
  47 + # path: ../sherpa_onnx_ios
  48 +
45 flutter: 49 flutter:
46 plugin: 50 plugin:
47 platforms: 51 platforms:
48 android: 52 android:
49 default_package: sherpa_onnx_android 53 default_package: sherpa_onnx_android
50 54
  55 + ios:
  56 + default_package: sherpa_onnx_ios
  57 +
51 macos: 58 macos:
52 default_package: sherpa_onnx_macos 59 default_package: sherpa_onnx_macos
53 60
  1 +# Miscellaneous
  2 +*.class
  3 +*.log
  4 +*.pyc
  5 +*.swp
  6 +.DS_Store
  7 +.atom/
  8 +.buildlog/
  9 +.history
  10 +.svn/
  11 +migrate_working_dir/
  12 +
  13 +# IntelliJ related
  14 +*.iml
  15 +*.ipr
  16 +*.iws
  17 +.idea/
  18 +
  19 +# The .vscode folder contains launch configuration and tasks you configure in
  20 +# VS Code which you may wish to be included in version control, so this line
  21 +# is commented out by default.
  22 +#.vscode/
  23 +
  24 +# Flutter/Dart/Pub related
  25 +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
  26 +/pubspec.lock
  27 +**/doc/api/
  28 +.dart_tool/
  29 +build/
  1 +# This file tracks properties of this Flutter project.
  2 +# Used by Flutter tool to assess capabilities and perform upgrades etc.
  3 +#
  4 +# This file should be version controlled and should not be manually edited.
  5 +
  6 +version:
  7 + revision: "5dcb86f68f239346676ceb1ed1ea385bd215fba1"
  8 + channel: "stable"
  9 +
  10 +project_type: plugin_ffi
  11 +
  12 +# Tracks metadata for the flutter migrate command
  13 +migration:
  14 + platforms:
  15 + - platform: root
  16 + create_revision: 5dcb86f68f239346676ceb1ed1ea385bd215fba1
  17 + base_revision: 5dcb86f68f239346676ceb1ed1ea385bd215fba1
  18 + - platform: ios
  19 + create_revision: 5dcb86f68f239346676ceb1ed1ea385bd215fba1
  20 + base_revision: 5dcb86f68f239346676ceb1ed1ea385bd215fba1
  21 +
  22 + # User provided section
  23 +
  24 + # List of Local paths (relative to this file) that should be
  25 + # ignored by the migrate tool.
  26 + #
  27 + # Files that are not part of the templates will be ignored by default.
  28 + unmanaged_files:
  29 + - 'lib/main.dart'
  30 + - 'ios/Runner.xcodeproj/project.pbxproj'
  1 +# sherpa_onnx_linux
  2 +
  3 +This is a sub project of [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx).
  4 +
  5 +You are not expected to use this package directly.
  6 +
  7 +Please see the entry point at <https://pub.dev/packages/sherpa_onnx>.
  1 +include: package:flutter_lints/flutter.yaml
  2 +
  3 +# Additional information about this file can be found at
  4 +# https://dart.dev/guides/language/analysis-options
  1 +#
  2 +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
  3 +# Run `pod lib lint sherpa_onnx_ios.podspec` to validate before publishing.
  4 +#
  5 +# See also
  6 +# https://github.com/google/webcrypto.dart/blob/2010361a106d7a872d90e3dfebfed250e2ede609/ios/webcrypto.podspec#L23-L28
  7 +# https://groups.google.com/g/dart-ffi/c/nUATMBy7r0c
  8 +Pod::Spec.new do |s|
  9 + s.name = 'sherpa_onnx_ios'
  10 + s.version = '1.10.11'
  11 + s.summary = 'A new Flutter FFI plugin project.'
  12 + s.description = <<-DESC
  13 +A new Flutter FFI plugin project.
  14 + DESC
  15 + s.homepage = 'https://github.com/k2-fsa/sherpa-onnx'
  16 + s.license = { :file => '../LICENSE' }
  17 + s.author = { 'Fangjun Kuang' => 'csukuangfj@gmail.com' }
  18 +
  19 + # This will ensure the source files in Classes/ are included in the native
  20 + # builds of apps using this FFI plugin. Podspec does not support relative
  21 + # paths, so Classes contains a forwarder C file that relatively imports
  22 + # `../src/*` so that the C sources can be shared among all target platforms.
  23 + s.source = { :path => '.' }
  24 + s.dependency 'Flutter'
  25 + s.platform = :ios, '12.0'
  26 + s.ios.vendored_libraries = '*.dylib', '*.a'
  27 +
  28 + # Flutter.framework does not contain a i386 slice.
  29 + s.pod_target_xcconfig = {
  30 + 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386'
  31 + }
  32 + s.swift_version = '5.0'
  33 +end
  1 +# Introduction
  2 +
  3 +This directory is left empty intentionally.
  1 +name: sherpa_onnx_ios
  2 +
  3 +description: >
  4 + Speech recognition, speech synthesis, and speaker recognition using next-gen Kaldi
  5 + with onnxruntime without Internet connection.
  6 +
  7 +version: 0.0.1
  8 +
  9 +repository: https://github.com/k2-fsa/sherpa-onnx/tree/master/flutter
  10 +
  11 +issue_tracker: https://github.com/k2-fsa/sherpa-onnx/issues
  12 +documentation: https://k2-fsa.github.io/sherpa/onnx/
  13 +
  14 +homepage: https://github.com/k2-fsa/sherpa-onnx
  15 +
  16 +topics:
  17 + - speech-recognition
  18 + - speech-synthesis
  19 + - speaker-identification
  20 + - audio-tagging
  21 + - voice-activity-detection
  22 +
  23 +environment:
  24 + sdk: '>=3.4.0 <4.0.0'
  25 + flutter: '>=3.3.0'
  26 +
  27 +dependencies:
  28 + flutter:
  29 + sdk: flutter
  30 +
  31 +flutter:
  32 + plugin:
  33 + platforms:
  34 + ios:
  35 + ffiPlugin: true
  36 +
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 # 4 #
5 Pod::Spec.new do |s| 5 Pod::Spec.new do |s|
6 s.name = 'sherpa_onnx_macos' 6 s.name = 'sherpa_onnx_macos'
7 - s.version = '1.10.7' 7 + s.version = '1.10.11'
8 s.summary = 'sherpa-onnx Flutter FFI plugin project.' 8 s.summary = 'sherpa-onnx Flutter FFI plugin project.'
9 s.description = <<-DESC 9 s.description = <<-DESC
10 sherpa-onnx Flutter FFI plugin project. 10 sherpa-onnx Flutter FFI plugin project.