QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

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

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).