Palavras-chave personalizadas Java SDK
Use o Java SDK para criar, consultar, atualizar e excluir vocabulários personalizados para reconhecimento de fala.
Guia do usuário: Melhorar a precisão do reconhecimento.
Pré-requisitos
- Uma chave de API configurado como o
DASHSCOPE_API_KEYvariável de ambiente - O SDK DashScope mais recente
URL do serviço
Defina o URL base antes de criar o serviço:
import com.alibaba.dashscope.utils.Constants;
Constants.baseHttpApiUrl = "https://maas.qwencloudapi.com/api/v1";
Classe VocabularyService
Pacote: com.alibaba.dashscope.audio.asr.vocabulary.VocabularyService
Gerencia o ciclo de vida de vocabulários personalizados (criar, listar, consultar, atualizar, excluir).
Construtor
public VocabularyService(String apiKey)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| APIKey | Corda | Sim | Sua chave de API do DashScope. |
criarVocabulário()
Crie um vocabulário personalizado.
public Vocabulary createVocabulary(String targetModel, String prefix,
JsonArray vocabulary)
throws NoApiKeyException, InputRequiredException
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| modelo de destino | Corda | Sim | O modelo de reconhecimento de fala que usa esse vocabulário. Deve corresponder ao modelo especificado ao chamar a API de reconhecimento de fala. |
| prefixo | Corda | Sim | Um prefixo personalizado para o vocabulário. Somente letras minúsculas e dígitos são permitidos, no máximo 10 caracteres. |
| vocabulário | JsonArray | Sim | As entradas do vocabulário. Consulte Estrutura do objeto Hotword. |
Retornos: Vocabulary - usar getVocabularyId() para recuperar o ID do vocabulário criado.
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.alibaba.dashscope.utils.Constants;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void main(String[] args) throws NoApiKeyException, InputRequiredException {
Constants.baseHttpApiUrl = "https://maas.qwencloudapi.com/api/v1";
String targetModel = "fun-asr";
JsonArray vocabularyJson = new JsonArray();
List<Hotword> wordList = new ArrayList<>();
wordList.add(new Hotword("Wu yi gong", 4));
wordList.add(new Hotword("A Family in Queli", 4));
for (Hotword word : wordList) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("text", word.text);
jsonObject.addProperty("weight", word.weight);
vocabularyJson.add(jsonObject);
}
VocabularyService service = new VocabularyService(apiKey);
Vocabulary vocabulary = service.createVocabulary(targetModel, "testpfx", vocabularyJson);
System.out.println("Custom vocabulary ID: " + vocabulary.getVocabularyId());
}
}
class Hotword {
String text;
int weight;
public Hotword(String text, int weight) {
this.text = text;
this.weight = weight;
}
}
listaVocabulário()
Lista vocabulários personalizados filtrados por prefixo.
public Vocabulary[] listVocabulary(String prefix)
throws NoApiKeyException, InputRequiredException
public Vocabulary[] listVocabulary(String prefix, int pageIndex, int pageSize)
throws NoApiKeyException, InputRequiredException
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prefixo | Corda | Sim | Filtre por prefixo de vocabulário. |
| índice de página | interno | Não | Número da página, começando em 0. Padrão: 0. |
| tamanho da página | interno | Não | Número de entradas por página. Padrão: 10. |
Retornos: Vocabulary[] — cada elemento possui os seguintes métodos:
| Método | Tipo de retorno | Descrição |
|---|---|---|
| getVocabularyId() | Corda | O ID do vocabulário. |
| getGmtCreate() | Corda | O tempo de criação. |
| getGmtModified() | Corda | A hora da última modificação. |
| getStatus() | Corda | OK: Pronto. UNDEPLOYED: Não disponível. |
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.alibaba.dashscope.utils.Constants;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void main(String[] args) throws NoApiKeyException, InputRequiredException {
Constants.baseHttpApiUrl = "https://maas.qwencloudapi.com/api/v1";
VocabularyService service = new VocabularyService(apiKey);
Vocabulary[] vocabularies = service.listVocabulary("testpfx");
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
System.out.println("Custom vocabularies: " + gson.toJson(vocabularies));
}
}
queryVocabulário()
Consulte detalhes de um vocabulário personalizado específico.
public Vocabulary queryVocabulary(String vocabularyId)
throws NoApiKeyException, InputRequiredException
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| vocabulárioId | Corda | Sim | O ID do vocabulário personalizado a ser consultado. |
Retornos: Vocabulary — possui os seguintes métodos:
| Método | Tipo de retorno | Descrição |
|---|---|---|
| getVocabularyId() | Corda | O ID do vocabulário. |
| getTargetModel() | Corda | O modelo de reconhecimento de fala. |
| getVocabulário() | JsonArray | As entradas do vocabulário. |
| getStatus() | Corda | OK: Pronto. UNDEPLOYED: Não disponível. |
| getGmtCreate() | Corda | O tempo de criação. |
| getGmtModified() | Corda | A hora da última modificação. |
| obterDados() | JsonObject | Os dados completos no formato JSON. |
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.alibaba.dashscope.utils.Constants;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void main(String[] args) throws NoApiKeyException, InputRequiredException {
Constants.baseHttpApiUrl = "https://maas.qwencloudapi.com/api/v1";
VocabularyService service = new VocabularyService(apiKey);
Vocabulary vocabulary = service.queryVocabulary("vocab-testpfx-xxxx");
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
System.out.println("Custom vocabulary: " + gson.toJson(vocabulary.getData()));
}
}
atualizarVocabulário()
Atualize um vocabulário personalizado. Isso substitui completamente as entradas existentes.
public void updateVocabulary(String vocabularyId, JsonArray vocabulary)
throws NoApiKeyException, InputRequiredException
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| vocabulárioId | Corda | Sim | O ID do vocabulário a ser atualizado. |
| vocabulário | JsonArray | Sim | As novas entradas de vocabulário. Consulte Estrutura do objeto Hotword. |
Retornos: void
import com.alibaba.dashscope.audio.asr.vocabulary.VocabularyService;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void main(String[] args) throws NoApiKeyException, InputRequiredException {
Constants.baseHttpApiUrl = "https://maas.qwencloudapi.com/api/v1";
JsonArray vocabularyJson = new JsonArray();
List<Hotword> wordList = new ArrayList<>();
wordList.add(new Hotword("Wu yi gong", 4, "en"));
wordList.add(new Hotword("A Family in Queli", 4, "en"));
for (Hotword word : wordList) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("text", word.text);
jsonObject.addProperty("weight", word.weight);
jsonObject.addProperty("lang", word.lang);
vocabularyJson.add(jsonObject);
}
VocabularyService service = new VocabularyService(apiKey);
service.updateVocabulary("vocab-testpfx-xxx", vocabularyJson);
}
}
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;
}
}
deletarVocabulário()
Exclua um vocabulário personalizado.
public void deleteVocabulary(String vocabularyId)
throws NoApiKeyException, InputRequiredException
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| vocabulárioId | Corda | Sim | O ID do vocabulário a ser excluído. |
Retornos: void
import com.alibaba.dashscope.audio.asr.vocabulary.VocabularyService;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
public static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void main(String[] args) throws NoApiKeyException, InputRequiredException {
Constants.baseHttpApiUrl = "https://maas.qwencloudapi.com/api/v1";
VocabularyService service = new VocabularyService(apiKey);
service.deleteVocabulary("vocab-testpfx-xxxx");
}
}
Estrutura do objeto Hotword
Cada entrada no vocabulary JsonArray possui os seguintes campos:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| texto | Corda | Sim | O texto de entrada do vocabulário. O idioma do texto deve ser suportado pelo modelo selecionado. Use palavras reais em vez de combinações arbitrárias de caracteres. Comprimento máximo: 15 caracteres para texto que inclua caracteres não ASCII ou 7 palavras separadas por espaço para texto somente ASCII. |
| peso | interno | Sim | O peso da entrada do vocabulário. Valor recomendado: 4. Valores válidos: 1 a 5. Se a precisão do reconhecimento não melhorar, aumente o peso. Um peso excessivamente alto pode reduzir a precisão do reconhecimento de outras palavras. |
| idioma | Corda | Não | O código do idioma do áudio a ser reconhecido. Quando definido, o sistema melhora o reconhecimento de entradas de vocabulário no idioma especificado. Se não for possível determinar o idioma antecipadamente, deixe esse parâmetro indefinido. Os valores válidos variam de acordo com o modelo. Fun-ASR: zh (chinês), en (Inglês), ja (Japonês). |