On-device speaker identification (本地说话人识别)

This page describes how to build SherpaOnnxSpeakerIdentification for on-device speaker identification that runs on HarmonyOS.

Open the project with DevEco Studio

You need to first download the code:

# Assume we place it inside /Users/fangjun/open-source
# You can place it anywhere you like.

cd /Users/fangjun/open-source/

git clone https://github.com/k2-fsa/sherpa-onnx

Then start DevEco Studio and follow the screenshots below:

Screenshot of starting DevEco

Fig. 43 Step 1: Click Open

Screenshot of selecting SherpaOnnxSpeakerIdentification to open

Fig. 44 Step 2: Select SherpaOnnxSpeakerIdentification inside the harmony-os folder and click Open

Screenshot of check version

Fig. 45 Step 3: Check that it is using the latest version. You can visit sherpa_onnx to check available versions.

Select a model

The code supports many models for extracting speaker embeddings and you have to select one.

You can find all supported models at

We use the following model

as an example in this document.

Use 3dspeaker_speech_eres2net_base_200k_sv_zh-cn_16k-common.onnx

First, we download it to the rawfile directory.

Caution: You MUST place the file inside the rawfile directory. Otherwise, you would be SAD later.

cd /Users/fangjun/open-source/sherpa-onnx/harmony-os/SherpaOnnxSpeakerIdentification/entry/src/main/resources/rawfile

wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-recongition-models/3dspeaker_speech_eres2net_base_200k_sv_zh-cn_16k-common.onnx

Please check that your directory looks exactly like the following:

(py38) fangjuns-MacBook-Pro:rawfile fangjun$ pwd
/Users/fangjun/open-source/sherpa-onnx/harmony-os/SherpaOnnxSpeakerIdentification/entry/src/main/resources/rawfile

(py38) fangjuns-MacBook-Pro:rawfile fangjun$ ls -lh
total 77888
-rw-r--r--  1 fangjun  staff    38M Oct 14 11:41 3dspeaker_speech_eres2net_base_200k_sv_zh-cn_16k-common.onnx
Screenshot of model file inside rawfile directory

Fig. 46 Step 4: Check that you have placed the model file inside the rawfile directory.

Now we need to change the code to use our selected model.

We have to change SpeakerIdentificationWorker.ets. Please see the following screenshot.

Screenshot of changing code for the selected model.

Fig. 47 Step 5: Change the code to use our selected model

Finally, we can build the project. See the screenshot below:

Screenshot of building the project

Fig. 48 Step 6: Build the project

If you have an emulator, you can now start it.

Screenshot of selecting device manager

Fig. 49 Step 7: Select the device manager

Screenshot of starting the emulator

Fig. 50 Step 8: Start the emulator

After the emulator is started, follow the screenshot below to run the app on the emulator:

Screenshot of starting the app on the emulator

Fig. 51 Step 9: Start the app on the emulator

You should see something like below:

Screenshot of app running on the emulator

Fig. 52 Step 10: Click Allow to allow the app to access the microphone

Screenshot of app running on the emulator

Fig. 53 Step 11: The home screen

Screenshot of app running on the emulator

Fig. 54 Step 12: View and manage registered speakers

Screenshot of app running on the emulator

Fig. 55 Step 13: Add new speakers

Screenshot of app running on the emulator

Fig. 56 Step 14: View help information

Congratulations!

You have successfully run a on-device speaker identification APP on HarmonyOS!