Skip to content

Commit d39eb0a

Browse files
committed
asr cost less than 2 secs at the first time
1 parent e3a5ea0 commit d39eb0a

File tree

20 files changed

+196
-98
lines changed

20 files changed

+196
-98
lines changed

build/envsetup.sh

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,25 @@ export LOCAL_WHISPERCPP_PATH=${PROJECT_ROOT_PATH}/external/whispercpp
4646
#modify following lines to adapt to local dev envs
4747
#export KANTV_TOOLCHAIN_PATH=${PROJECT_ROOT_PATH}/toolchain
4848
export KANTV_TOOLCHAIN_PATH=/opt/kantv-toolchain
49-
export ANDROID_NDK=${KANTV_TOOLCHAIN_PATH}/android-ndk-r21e
49+
#API21:Android 5.0 (Android L)Lollipop
50+
#API22:Android 5.1 (Android L)Lollipop
51+
#API23:Android 6.0 (Android M)Marshmallow
52+
#API24: Android 7.0 (Android N)Nougat
53+
#API25: Android 7.1 (Android N)Nougat
54+
#API26:Android 8.0 (Android O)Oreo
55+
#API27:Android 8.1 (Android O)Oreo
56+
#API28:Android 9.0 (Android P)Pie
57+
#API29:Android 10
58+
#API30:Android 11
59+
#API31:Android 12
60+
#API31:Android 12L
61+
#API33:Android 13
62+
#API34:Android 14
63+
export ANDROID_PLATFORM=android-34
64+
#export ANDROID_NDK=${KANTV_TOOLCHAIN_PATH}/android-ndk-r18b
65+
#export ANDROID_NDK=${KANTV_TOOLCHAIN_PATH}/android-ndk-r21e
66+
#export ANDROID_NDK=${KANTV_TOOLCHAIN_PATH}/android-ndk-r24
67+
export ANDROID_NDK=${KANTV_TOOLCHAIN_PATH}/android-ndk-r26c
5068
export LOCAL_BAZEL_PATH=${HOME_PATH}/.cache/bazel/_bazel_${BUILD_USER}/d483cd2a2d9204cb5bb4d870c2729238
5169
export UPSTREAM_WHISPERCPP_PATH=~/cdeos/whisper.cpp
5270

build/public.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,14 @@ function dump_global_envs()
216216
echo -e "PROJECT_HOME_PATH: ${PROJECT_HOME_PATH}"
217217
echo -e "PROJECT_ROOT_PATH: ${PROJECT_ROOT_PATH}"
218218
echo -e "KANTV_TOOLCHAIN_PATH: ${KANTV_TOOLCHAIN_PATH}"
219-
220219
echo -e "host cpu counts: ${HOST_CPU_COUNTS}"
221220

222221
if [ "${BUILD_TARGET}" = "android" ]; then
223222
echo -e "\n"
224-
echo -e "ANDROID_NDK: ${ANDROID_NDK}"
225-
echo -e "LOCAL_WHISPERCPP_PATH: ${LOCAL_WHISPERCPP_PATH}"
226-
echo -e "UPSTREAM_WHISPERCPP_PATH: ${UPSTREAM_WHISPERCPP_PATH}"
223+
echo -e "${TEXT_RED}ANDROID_PLATFORM: ${ANDROID_PLATFORM}${TEXT_RESET}"
224+
echo -e "${TEXT_RED}ANDROID_NDK: ${ANDROID_NDK}${TEXT_RESET}"
225+
echo -e "LOCAL_WHISPERCPP_PATH: ${LOCAL_WHISPERCPP_PATH}"
226+
echo -e "UPSTREAM_WHISPERCPP_PATH: ${UPSTREAM_WHISPERCPP_PATH}"
227227
echo -e "\n"
228228
fi
229229

cdeosplayer/build.gradle

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
google()
99
}
1010
dependencies {
11-
classpath 'com.android.tools.build:gradle:7.0.2'
11+
classpath 'com.android.tools.build:gradle:7.0.3'
1212
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
1313
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7'
1414
}
@@ -30,30 +30,5 @@ task clean(type: Delete) {
3030
}
3131

3232
wrapper {
33-
gradleVersion = '7.0.2'
33+
gradleVersion = '7.0.3'
3434
}
35-
36-
37-
38-
/*
39-
API14: Android 4.0-4.0.2 – Ice Cream Sandwich, released October 2011. Build version
40-
API15:Android 4.0.3 - 4.0.4 Ice Cream Sandwich
41-
API16:Android 4.1 Jelly Bean
42-
API17:Android 4.2 Jelly Bean
43-
API18:Android 4.3 Jelly Bean
44-
API19:Android 4.4 KitKat
45-
API20:Android 4.4W Kitkat Watch
46-
API21:Android 5.0 (Android L)Lollipop
47-
API22:Android 5.1 (Android L)Lollipop
48-
API23:Android 6.0 (Android M)Marshmallow
49-
API24: Android 7.0 (Android N)Nougat
50-
API25: Android 7.1 (Android N)Nougat
51-
API26:Android 8.0 (Android O)Oreo
52-
API27:Android 8.1 (Android O)Oreo
53-
API28:Android 9.0 (Android P)Pie
54-
API29:Android 10.0 (Android Q)
55-
API30:Android 11.0 (Android R)
56-
API31:Android 12.0
57-
API32:Android 13.0
58-
API33:Android 14.0
59-
*/

cdeosplayer/cdeosplayer-lib/src/main/java/org/ggml/whispercpp/whispercpp.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ public class whispercpp {
88

99
public static native String get_systeminfo();
1010

11+
public static native int get_cpu_core_counts();
12+
1113
public static native void set_benchmark_status(int bExitBenchmark);
1214

1315
/**
1416
*
1517
* @param modelPath
1618
* @param audioFile
17-
* @param nBenchType 0: memcpy 1: mulmat 2: asr 3: full/whisper_encoder
19+
* @param nBenchType 0: asr 1: memcpy 2: mulmat 3: full/whisper_encode
1820
* @param nThreadCounts
1921
* @return
2022
*/

cdeosplayer/constants.gradle

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2017 The Android Open Source Project
1+
// Copyright 2024 The Android Open Source Project
22
//
33
// Licensed under the Apache License, Version 2.0 (the "License");
44
// you may not use this file except in compliance with the License.
@@ -11,14 +11,36 @@
1111
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
14+
/*
15+
API14: Android 4.0-4.0.2 – Ice Cream Sandwich, released October 2011. Build version
16+
API15:Android 4.0.3 - 4.0.4 Ice Cream Sandwich
17+
API16:Android 4.1 Jelly Bean
18+
API17:Android 4.2 Jelly Bean
19+
API18:Android 4.3 Jelly Bean
20+
API19:Android 4.4 KitKat
21+
API20:Android 4.4W Kitkat Watch
22+
API21:Android 5.0 (Android L)Lollipop
23+
API22:Android 5.1 (Android L)Lollipop
24+
API23:Android 6.0 (Android M)Marshmallow
25+
API24: Android 7.0 (Android N)Nougat
26+
API25: Android 7.1 (Android N)Nougat
27+
API26:Android 8.0 (Android O)Oreo
28+
API27:Android 8.1 (Android O)Oreo
29+
API28:Android 9.0 (Android P)Pie
30+
API29:Android 10
31+
API30:Android 11
32+
API31:Android 12
33+
API32: Android 12L
34+
API33:Android 13
35+
API34:Android 14
36+
*/
1437
project.ext {
15-
compileSdkVersion = 30
16-
buildToolsVersion = "30.0.3"
17-
targetSdkVersion = 28
18-
minSdkVersion = 19
19-
//minSdkVersion = 16
38+
//weiguo:2024-03-10, attention here,only works for Xiaomi 14
39+
compileSdkVersion = 34
40+
buildToolsVersion = "34.0.0"
41+
targetSdkVersion = 34
42+
minSdkVersion = 34
2043
appTargetSdkVersion = 29
21-
ndkVersion = "21.4.7075529"
2244

2345
//version and version code of KanTV
2446
releaseVersion = '1.3.0'
@@ -44,4 +66,4 @@ project.ext {
4466
if (gradle.ext.has('exoplayerModulePrefix')) {
4567
modulePrefix += gradle.ext.exoplayerModulePrefix
4668
}
47-
}
69+
}

cdeosplayer/kantv/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ android {
4444
}
4545
}
4646

47-
ndkVersion '21.1.6352462'
47+
//weiguo:2024-03-10, attention here
48+
//ndkVersion '21.1.6352462'
49+
ndkVersion '26.2.11394342'
4850

4951
sourceSets {
5052
main {
-74.1 MB
Binary file not shown.

cdeosplayer/kantv/src/main/java/com/cdeos/kantv/ui/activities/MainActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,9 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
267267

268268
CDEUtils.dumpDeviceInfo();
269269

270-
if (CDEUtils.isEmulator(this)) {
270+
//if (CDEUtils.isEmulator(this))
271+
if (false)
272+
{
271273
showWarningDialog(this, "can't running this app in emulator");
272274
navigationView.getMenu().findItem(R.id.navigation_play).setEnabled(false);
273275
navigationView.getMenu().findItem(R.id.navigation_home).setEnabled(false);

cdeosplayer/kantv/src/main/java/com/cdeos/kantv/ui/fragment/ASRFragment.java

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,25 +89,26 @@ public class ASRFragment extends BaseMvpFragment<ASRPresenter> implements ASRVie
8989

9090
Button _btnBenchmark;
9191

92-
private static final int BECHMARK_MEMCPY = 0;
93-
private static final int BECHMARK_MULMAT = 1;
94-
private static final int BECHMARK_ASR = 2;
95-
private static final int BECHMARK_FULL = 3; //very slow on Android phone
96-
97-
private int nThreadCounts = 1;
98-
private int benchmarkIndex = 0;
99-
private String strModeName = "tiny";
100-
101-
private long beginTime = 0;
102-
private long endTime = 0;
103-
private long duration = 0;
92+
//keep sync with kantv_asr.h
93+
private static final int BECHMARK_ASR = 0;
94+
private static final int BECHMARK_MEMCPY = 1;
95+
private static final int BECHMARK_MULMAT = 2;
96+
private static final int BECHMARK_FULL = 3; //very slow on Android phone
97+
98+
private int nThreadCounts = 1;
99+
private int benchmarkIndex = 0;
100+
private String strModeName = "tiny";
101+
102+
private long beginTime = 0;
103+
private long endTime = 0;
104+
private long duration = 0;
104105
private String strBenchmarkInfo;
105106

106107
private AtomicBoolean isBenchmarking = new AtomicBoolean(false);
107108
private ProgressDialog mProgressDialog;
108109

109-
private String ggmlModelFileName = "ggml-tiny.bin";
110-
private String ggmlSampleFileName = "jfk.wav";
110+
private String ggmlModelFileName = "ggml-tiny.bin";
111+
private String ggmlSampleFileName = "jfk.wav";
111112

112113
private Context mContext;
113114
private Activity mActivity;
@@ -160,7 +161,13 @@ public void initView() {
160161
_txtASRInfo.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
161162
displayFileStatus(CDEUtils.getDataPath() + ggmlSampleFileName, CDEUtils.getDataPath() + ggmlModelFileName);
162163

163-
CDELibraryLoader.load("whispercpp");
164+
try {
165+
CDELibraryLoader.load("whispercpp");
166+
CDELog.j(TAG, "cpu core counts:" + whispercpp.get_cpu_core_counts());
167+
} catch (Exception e) {
168+
CDELog.j(TAG, "failed to initialize whispercpp jni");
169+
return;
170+
}
164171

165172
try {
166173
initKANTVMgr();
@@ -216,6 +223,24 @@ public void onNothingSelected(AdapterView<?> parent) {
216223
}
217224
});
218225

226+
/*
227+
<item>tiny</item>
228+
<item>tiny.en</item> good
229+
<item>tiny.en-q5_1</item> good
230+
<item>tiny.en-q8_0</item>
231+
<item>tiny-q5_1</item>
232+
<item>base</item>
233+
<item>base.en</item>
234+
<item>base-q5_1</item>
235+
<item>small</item>
236+
<item>small.en</item>
237+
<item>small.en-q5_1</item>
238+
<item>small-q5_1</item>
239+
<item>medium</item>
240+
<item>medium.en</item>
241+
<item>medium.en-q5_0</item>
242+
<item>large</item>
243+
*/
219244
Spinner spinnerModelName = mActivity.findViewById(R.id.spinnerModelName);
220245
String[] arrayModelName = getResources().getStringArray(R.array.modelName);
221246
ArrayAdapter<String> adapterModel = new ArrayAdapter<String>(mActivity, android.R.layout.simple_spinner_dropdown_item, arrayModelName);
@@ -291,7 +316,6 @@ public void run() {
291316
whispercpp.set_benchmark_status(0);
292317

293318

294-
295319
while (isBenchmarking.get()) {
296320
beginTime = System.currentTimeMillis();
297321
strBenchmarkInfo = whispercpp.bench(
@@ -318,7 +342,7 @@ public void run() {
318342

319343

320344
if (strBenchmarkInfo.startsWith("asr_result")) { //when got asr result, playback the audio file
321-
playAudioFile();
345+
//playAudioFile();
322346
}
323347

324348
CDELog.j(TAG, benchmarkTip);

cdeosplayer/kantv/src/main/res/values/arrays.xml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,32 +73,39 @@
7373
</string-array>
7474

7575
<string-array name="benchType">
76+
<item>asr</item>
7677
<item>mempcpy</item>
7778
<item>mulmat</item>
78-
<item>asr</item>
7979
<item>full</item>
8080
</string-array>
8181

8282
<string-array name="threadCounts">
83-
<item>1</item>
84-
<item>2</item>
85-
<item>3</item>
86-
<item>4</item>
87-
<item>5</item>
88-
<item>6</item>
89-
<item>7</item>
9083
<item>8</item>
84+
<item>7</item>
85+
<item>6</item>
86+
<item>5</item>
87+
<item>4</item>
88+
<item>3</item>
89+
<item>2</item>
90+
<item>1</item>
9191
</string-array>
9292

9393
<string-array name="modelName">
9494
<item>tiny</item>
9595
<item>tiny.en</item>
96+
<item>tiny.en-q5_1</item>
97+
<item>tiny.en-q8_0</item>
98+
<item>tiny-q5_1</item>
9699
<item>base</item>
97100
<item>base.en</item>
101+
<item>base-q5_1</item>
98102
<item>small</item>
99103
<item>small.en</item>
104+
<item>small.en-q5_1</item>
105+
<item>small-q5_1</item>
100106
<item>medium</item>
101107
<item>medium.en</item>
108+
<item>medium.en-q5_0</item>
102109
<item>large</item>
103110
</string-array>
104111
</resources>

external/OpenBLAS/CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
cmake_minimum_required(VERSION 2.8.5)
66

77
project(OpenBLAS C ASM)
8+
set(CMAKE_VERBOSE_MAKEFILE on)
89

910
set(OpenBLAS_MAJOR_VERSION 0)
1011
set(OpenBLAS_MINOR_VERSION 3)
@@ -24,6 +25,15 @@ set(NO_FORTRAN 1)
2425
set(BUILD_WITHOUT_LAPACK 1)
2526
set(BUILD_TESTING 0)
2627

28+
add_definitions(-DNDEBUG)
29+
add_definitions(-O3)
30+
#add_definitions(-funsafe-math-optimizations)
31+
#add_definitions(-march=armv8.6-a+simd)
32+
#add_definitions(-mcpu=cortex-a78)
33+
add_definitions(-march=armv9+simd)
34+
add_definitions(-mcpu=cortex-x3)
35+
add_definitions(-mfloat-abi=hard -mfpu=neon-fp-armv8)
36+
2737
option(BUILD_LAPACK_DEPRECATED "When building LAPACK, include also some older, deprecated routines" ON)
2838

2939
option(BUILD_TESTING "Build LAPACK testsuite when building LAPACK" OFF)
@@ -327,7 +337,7 @@ endif()
327337
if (NOT NO_CBLAS)
328338
if (NOT ONLY_CBLAS)
329339
# Broken without fortran on unix
330-
add_subdirectory(utest)
340+
#add_subdirectory(utest)
331341
endif()
332342
endif()
333343

external/OpenBLAS/build.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ fi
3838

3939
function build_arm64
4040
{
41-
cmake -H. -B./out/arm64-v8a -DPROJECT_ROOT_PATH=${PROJECT_ROOT_PATH} -DTARGET_NAME=${TARGET} -DCMAKE_BUILD_TYPE=${PROJECT_BUILD_TYPE} -DBUILD_TARGET="android" -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-21 -DANDROID_NDK=${ANDROID_NDK} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DLOCAL_WHISPERCPP_PATH=${LOCAL_WHISPERCPP_PATH}
41+
cmake -H. -B./out/arm64-v8a -DPROJECT_ROOT_PATH=${PROJECT_ROOT_PATH} -DTARGET_NAME=${TARGET} -DCMAKE_BUILD_TYPE=${PROJECT_BUILD_TYPE} -DBUILD_TARGET="android" -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=${ANDROID_PLATFORM} -DANDROID_NDK=${ANDROID_NDK} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DLOCAL_WHISPERCPP_PATH=${LOCAL_WHISPERCPP_PATH}
4242
cd ./out/arm64-v8a
43-
make -j${HOST_CPU_COUNTS} NO_LAPACK=1 NO_FORTRAN=1 BUILD_TESTING=0 BUILD_WITHOUT_LPACK=1
43+
#make -j${HOST_CPU_COUNTS} NO_LAPACK=1 NO_FORTRAN=1 BUILD_TESTING=0 BUILD_WITHOUT_LPACK=1
44+
make -j${HOST_CPU_COUNTS} NO_LAPACK=1 NO_FORTRAN=1 BUILD_TESTING=0 BUILD_WITHOUT_LPACK=1
4445

4546
ls -l lib/lib${TARGET}.so
4647
ls -lah lib/lib${TARGET}.so
@@ -51,7 +52,7 @@ cd -
5152

5253
function build_armv7a
5354
{
54-
cmake -H. -B./out/armeabi-v7a -DPROJECT_ROOT_PATH=${PROJECT_ROOT_PATH} -DTARGET_NAME=${TARGET} -DCMAKE_BUILD_TYPE=${PROJECT_BUILD_TYPE} -DBUILD_TARGET="android" -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-21 -DANDROID_NDK=${ANDROID_NDK} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DLOCAL_WHISPERCPP_PATH=${LOCAL_WHISPERCPP_PATH}
55+
cmake -H. -B./out/armeabi-v7a -DPROJECT_ROOT_PATH=${PROJECT_ROOT_PATH} -DTARGET_NAME=${TARGET} -DCMAKE_BUILD_TYPE=${PROJECT_BUILD_TYPE} -DBUILD_TARGET="android" -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=${ANDROID_PLATFORM} -DANDROID_NDK=${ANDROID_NDK} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DLOCAL_WHISPERCPP_PATH=${LOCAL_WHISPERCPP_PATH}
5556
cd ./out/armeabi-v7a
5657
make
5758

0 commit comments

Comments
 (0)