Jika performa pengenalan ucapan rendah untuk kata atau frasa tertentu dalam domain bisnis spesifik Anda, Anda dapat menambahkannya ke kosakata kustom. Hal ini memprioritaskan pengenalannya dan meningkatkan akurasi.
Dokumen ini hanya berlaku untuk wilayah China (Beijing). Untuk menggunakan model-model tersebut, Anda memerlukan Kunci API untuk wilayah China (Beijing).
Ikhtisar
Kosakata kustom digunakan dalam kit pengembangan perangkat lunak (SDK) sebagai daftar istilah. Daftar tersebut berupa larik JSON yang setiap elemennya merupakan objek dengan bidang-bidang berikut:
Field | Type | Required | Description |
text | string | Yes | Istilah kosakata kustom. Setiap istilah tidak boleh melebihi 15 karakter Tionghoa atau 7 kata bahasa Inggris. Jika suatu istilah mengandung campuran karakter Tionghoa dan huruf Inggris, jumlah total karakter dan huruf tidak boleh melebihi 15. |
weight | int | Yes | Bobot istilah tersebut. Nilainya harus berupa bilangan bulat dari 1 hingga 5. Nilai umum yang digunakan adalah 4. Jika pengenalan tidak membaik, Anda dapat menaikkan bobotnya. Namun, bobot yang terlalu tinggi dapat menyebabkan kata lain dikenali secara salah. |
lang | string | No | Kode bahasa. Ini memungkinkan Anda meningkatkan prioritas istilah untuk bahasa tertentu yang didukung oleh model Automatic Speech Recognition (ASR). Untuk informasi selengkapnya mengenai bahasa yang didukung beserta kode-kodenya, lihat referensi API untuk model tersebut. Agar peningkatan prioritas berlaku, Anda harus menentukan bahasa yang sama dalam parameter language_hints pada permintaan pengenalan Anda. Istilah untuk bahasa lain akan diabaikan. |
Skenario
Untuk meningkatkan akurasi pengenalan judul film, Anda dapat menambahkan judul-judul berikut ke kosakata kustom.
[
{"text": "赛德克巴莱", "weight": 4, "lang": "zh"},
{"text": "Seediq Bale", "weight": 4, "lang": "en"},
{"text": "夏洛特烦恼", "weight": 4, "lang": "zh"},
{"text": "Goodbye Mr. Loser", "weight": 4, "lang": "en"},
{"text": "阙里人家", "weight": 4, "lang": "zh"},
{"text": "Confucius' Family", "weight": 4, "lang": "en"},
]Model yang Didukung
Pengenalan ucapan Real-time: paraformer-realtime-v2, paraformer-realtime-8k-v2, fun-asr-realtime, fun-asr-realtime-2025-11-07, dan fun-asr-realtime-2025-09-15
Pengenalan ucapan batch: paraformer-v2, paraformer-8k-v2, fun-asr, fun-asr-2025-11-07, dan fun-asr-2025-08-25
Penagihan
Kosakata kustom saat ini tidak dikenai biaya.
Batas Kosakata
Setiap akun dapat membuat 10 kosakata. Untuk menaikkan batas ini, Anda dapat mengajukan permintaan.
Jumlah istilah yang dapat ditambahkan ke setiap kosakata bervariasi tergantung model:
Model seri Fun-ASR:
Model fun-asr dan fun-asr-2025-11-07: hingga 10.000
Model lainnya: hingga 1.000
Model seri Paraformer: hingga 500
Prasyarat
Aktifkan layanan dan peroleh Kunci API. Untuk informasi selengkapnya, lihat Buat dan konfigurasikan Kunci API.
Tetapkan Kunci API Anda sebagai Variabel lingkungan untuk mengurangi risiko kebocoran. Untuk informasi selengkapnya, lihat Tetapkan Kunci API sebagai Variabel lingkungan. Anda juga dapat menuliskan Kunci API langsung di kode Anda, tetapi hal ini meningkatkan risiko kebocoran.
SDK versi terbaru telah diinstal. Untuk informasi selengkapnya, lihat Instal SDK.
Contoh Kode
Contoh kode berikut menunjukkan cara membuat kosakata dan menggunakannya untuk mengenali file audio lokal dengan model paraformer-realtime-v2.
import dashscope
from dashscope.audio.asr import *
dashscope.api_key = 'your-dashscope-api-key'
prefix = 'prefix'
target_model = "paraformer-realtime-v2"
my_vocabulary = [
{"text": "Wu Yigong", "weight": 4, "lang": "zh"},
{"text": "Confucius' Family", "weight": 4, "lang": "zh"},
]
# buat kosakata
service = VocabularyService()
vocabulary_id = service.create_vocabulary(
prefix=prefix,
target_model=target_model,
vocabulary=my_vocabulary)
print(f"ID kosakata Anda adalah {vocabulary_id}")
# gunakan kosakata untuk mengenali file
recognition = Recognition(model=target_model,
format='wav',
sample_rate=16000,
callback=None,
vocabulary_id=vocabulary_id,
language_hints=['zh']) # Parameter language_hints hanya didukung oleh model paraformer-v2 dan paraformer-realtime-v2.
result = recognition.call('your-audio-file.wav')
print(result.output)
package org.example.customization;
import com.alibaba.dashscope.audio.asr.recognition.Recognition;
import com.alibaba.dashscope.audio.asr.recognition.RecognitionParam;
import com.alibaba.dashscope.audio.asr.vocabulary.Vocabulary;
import com.alibaba.dashscope.audio.asr.vocabulary.VocabularyService;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class VocabularySampleCodes {
public static String apiKey = "your-dashscope-apikey";
public static void main(String[] args) throws NoApiKeyException, InputRequiredException {
String targetModel = "paraformer-realtime-v2";
// siapkan kosakata
class Hotword {
String text;
int weight;
String lang;
public Hotword(String text, int weight, String lang) {
this.text = text;
this.weight = weight;
this.lang = lang;
}
}
JsonArray vocabulary = new JsonArray();
List<Hotword> wordList = new ArrayList<>();
wordList.add(new Hotword("Wu Yigong", 4, "zh"));
wordList.add(new Hotword("Confucius' Family", 4, "zh"));
for (Hotword word : wordList) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("text", word.text);
jsonObject.addProperty("weight", word.weight);
jsonObject.addProperty("lang", word.lang);
vocabulary.add(jsonObject);
}
// buat kosakata
VocabularyService service = new VocabularyService(apiKey);
Vocabulary myVoc = service.createVocabulary(targetModel, "prefix", vocabulary);
System.out.println("ID kosakata Anda adalah " + myVoc.getVocabularyId());
// gunakan kosakata untuk mengenali file
Recognition recognizer = new Recognition();
RecognitionParam param =
RecognitionParam.builder()
.model(targetModel)
.format("wav")
.sampleRate(16000)
.apiKey(apiKey)
.vocabularyId(myVoc.getVocabularyId())
// Parameter language_hints hanya didukung oleh model paraformer-v2 dan paraformer-realtime-v2.
.parameter("language_hints", new String[] {"zh"})
.build();
String result = recognizer.call(param, new File("your-local-audio-file.wav"));
System.out.println(result);
System.exit(0);
}
}Kelola kosakata dengan SDK DashScope
Inisialisasi objek
service = VocabularyService(api_key="your-dashscope-apikey")VocabularyService service = new VocabularyService("your-dashscope-apikey");Buat kosakata
def create_vocabulary(self, target_model: str, prefix: str, vocabulary: List[dict]) -> str:
'''
Buat kosakata.
param: target_model Versi model pengenalan ucapan untuk kosakata ini.
param: prefix Awalan kustom untuk kosakata. Harus terdiri dari kurang dari 10 huruf kecil dan angka.
param: vocabulary Kamus kosakata.
return: Pengidentifikasi kosakata, vocabulary_id.
'''/**
* Buat kosakata baru.
*
* @param targetModel Versi model pengenalan ucapan untuk kosakata ini.
* @param prefix Awalan kustom untuk kosakata. Harus terdiri dari kurang dari 10 huruf kecil dan angka.
* @param vocabulary Daftar kosakata.
* @return Objek kosakata.
* @throws NoApiKeyException jika Kunci API kosong.
* @throws InputRequiredException jika parameter yang diperlukan kosong.
*/
public Vocabulary createVocabulary(String targetModel, String prefix, JsonArray vocabulary)
throws NoApiKeyException, InputRequiredException Kueri semua kosakata
def list_vocabularies(self, prefix=None, page_index: int = 0, page_size: int = 10) -> List[dict]:
'''
Kueri semua kosakata yang telah dibuat.
param: prefix Awalan kustom. Jika ditentukan, hanya mengembalikan daftar pengidentifikasi kosakata dengan awalan ini.
param: page_index Indeks halaman yang dikueri.
param: page_size Ukuran halaman.
return: Daftar pengidentifikasi kosakata.
'''/**
* Kueri semua kosakata yang telah dibuat. Indeks halaman default adalah 0, dan ukuran halaman default adalah 10.
*
* @param prefix Awalan kustom untuk kosakata.
* @return Larik objek kosakata.
* @throws NoApiKeyException jika Kunci API kosong.
* @throws InputRequiredException jika parameter yang diperlukan kosong.
*/
public Vocabulary[] listVocabulary(String prefix)
throws NoApiKeyException, InputRequiredException
/**
* Kueri semua kosakata yang telah dibuat.
*
* @param prefix Awalan kustom untuk kosakata.
* @param pageIndex Indeks halaman yang dikueri.
* @param pageSize Ukuran halaman.
* @return Larik objek kosakata.
* @throws NoApiKeyException jika Kunci API kosong.
* @throws InputRequiredException jika parameter yang diperlukan kosong.
*/
public Vocabulary[] listVocabulary(String prefix, int pageIndex, int pageSize)
throws NoApiKeyException, InputRequiredExceptionContoh respons:
[
{
"gmt_create": "2024-08-21 15:19:09",
"vocabulary_id": "vocab-xxx-1f8b10e61ac54b1da86a8d5axxxxxxxx",
"gmt_modified": "2024-08-21 15:19:09",
"status": "OK",
},
{
"gmt_create": "2024-08-27 11:17:04",
"vocabulary_id": "vocab-xxx-24ee19fa8cfb4d52902170a0xxxxxxxx",
"gmt_modified": "2024-08-27 11:17:04",
"status": "OK",
}
]
Kueri kosakata tertentu
def query_vocabulary(self, vocabulary_id: str) -> List[dict]:
'''
Dapatkan isi kosakata.
param: vocabulary_id Identifier kosakata.
return: Kosakata tersebut.
'''/**
* Kueri kosakata tertentu.
*
* @param vocabularyId Kosakata yang akan dikueri.
* @return Objek kosakata.
* @throws NoApiKeyException jika Kunci API kosong.
* @throws InputRequiredException jika parameter yang diperlukan kosong.
*/
public Vocabulary queryVocabulary(String vocabularyId)
throws NoApiKeyException, InputRequiredExceptionContoh respons:
{
"gmt_create": "2024-08-21 15:19:09",
"vocabulary": [
{"weight": 4, "text": "Wu Yigong", "lang": "zh"},
{"weight": 4, "text": "Confucius' Family", "lang": "zh"},
],
"target_model": "paraformer-realtime-v2",
"gmt_modified": "2024-08-21 15:19:09",
"status": "OK",
}
Perbarui kosakata
def update_vocabulary(self, vocabulary_id: str, vocabulary: List[dict]) -> None:
'''
Ganti kosakata yang ada dengan kosakata baru.
param: vocabulary_id Pengidentifikasi kosakata yang akan diganti.
param: vocabulary Kosakata baru.
'''/**
* Perbarui kosakata.
*
* @param vocabularyId Kosakata yang akan diperbarui.
* @param vocabulary Objek kosakata.
* @throws NoApiKeyException jika Kunci API kosong.
* @throws InputRequiredException jika parameter yang diperlukan kosong.
*/
public void updateVocabulary(String vocabularyId, JsonArray vocabulary)
throws NoApiKeyException, InputRequiredExceptionHapus kosakata
def delete_vocabulary(self, vocabulary_id: str) -> None:
'''
Hapus kosakata.
param: vocabulary_id Identifier kosakata yang akan dihapus.
'''/**
* Hapus kosakata.
*
* @param vocabularyId Kosakata yang akan dihapus.
* @throws NoApiKeyException jika Kunci API kosong.
* @throws InputRequiredException jika parameter yang diperlukan kosong.
*/
public void deleteVocabulary(String vocabularyId)
throws NoApiKeyException, InputRequiredExceptionPenanganan kesalahan
Dalam SDK Python, kesalahan dilemparkan sebagai VocabularyServiceException. Pengecualian ini mencakup kode status, kode kesalahan, dan pesan kesalahan.
class VocabularyServiceException(Exception):
def __init__(self, status_code: int, code: str, error_message: str)Dalam SDK Java, kesalahan dilemparkan sebagai NoApiKeyException dan InputRequiredException.
Kelola kosakata dengan layanan HTTP
Layanan kosakata kustom menggunakan protokol HTTPS. Anda dapat membuat, membaca, memperbarui, dan menghapus kosakata melalui permintaan HTTP.
Jika Anda belum mengonfigurasi Kunci API sebagai Variabel lingkungan, ganti `Authorization: Bearer $DASHSCOPE_API_KEY` dengan `Authorization: Bearer your-api-key` dalam perintah cURL, di mana `your-api-key` adalah Kunci API Anda.
Bidang usage dalam respons digunakan untuk keperluan penagihan. Karena layanan kosakata kustom gratis, Anda dapat mengabaikan bidang ini.
Buat kosakata
Contoh cURL:
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "speech-biasing",
"input": {
"action": "create_vocabulary",
"target_model": "paraformer-realtime-v2",
"prefix": "testpfx",
"vocabulary": [
{"text": "Wu Yigong", "weight": 4, "lang": "zh"},
{"text": "Confucius' Family", "weight": 4, "lang": "zh"}
]
}
}'Contoh respons:
{
"output": {
"task_status": "PENDING",
"task_id": "c2e5d63b-96e1-4607-bb91-************"
},
"request_id": "77ae55ae-be17-97b8-9942--************"
}Kueri semua kosakata
Contoh cURL:
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "speech-biasing",
"input": {
"action": "list_vocabulary",
"prefix": null,
"page_index": 0,
"page_size": 10
}
}'Dalam contoh ini, bidang prefix bernilai null, artinya semua kosakata dikembalikan. Anda dapat mengubah nilai ini menjadi string tertentu sesuai kebutuhan.
Contoh respons:
{
"output": {
"vocabulary_list": [{
"gmt_create": "2024-11-05 16:31:32",
"vocabulary_id": "vocab-testpfx-6977ae49f65c4c3db054727cxxxxxxxx",
"gmt_modified": "2024-11-05 16:31:32",
"status": "OK"
}]
},
"usage": {
"count": 1
},
"request_id": "4e7df7c0-18a8-9f3e-bfc4-xxxxxxxxxxxx"
}Kueri kosakata tertentu
Contoh cURL:
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "speech-biasing",
"input": {
"action": "query_vocabulary",
"vocabulary_id": "vocab-testpfx-6977ae49f65c4c3db054727cxxxxxxxx"
}
}'Contoh respons:
{
"output": {
"gmt_create": "2024-11-05 16:31:32",
"vocabulary": [{
"weight": 4,
"text": "Wu Yigong",
"lang": "zh"
}, {
"weight": 4,
"text": "Confucius' Family",
"lang": "zh"
}],
"target_model": "paraformer-realtime-v2",
"gmt_modified": "2024-11-05 16:31:32",
"status": "OK"
},
"usage": {
"count": 1
},
"request_id": "b02d18a4-ff8d-9fd4-b4f0-xxxxxxxxxxxx"
}Perbarui kosakata
Contoh cURL:
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "speech-biasing",
"input": {
"action": "update_vocabulary",
"vocabulary_id": "vocab-testpfx-6977ae49f65c4c3db054727cxxxxxxxx",
"vocabulary": [
{"text": "Wu Yigong", "weight": 4, "lang": "zh"}
]
}
}'Contoh respons:
{
"output": {},
"usage": {
"count": 1
},
"request_id": "a51f3139-7aaa-941b-994f-xxxxxxxxxxxx"
}Hapus kosakata
Contoh cURL:
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/audio/asr/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "speech-biasing",
"input": {
"action": "delete_vocabulary",
"vocabulary_id": "vocab-testpfx-6977ae49f65c4c3db054727cxxxxxxxx"
}
}'Contoh respons:
{
"output": {},
"usage": {
"count": 1
},
"request_id": "d7499ee5-6c91-956c-a1aa-xxxxxxxxxxxx"
}Kode Kesalahan
Untuk informasi troubleshooting, lihat Pesan Kesalahan.