All Products
Search
Document Center

Alibaba Cloud Model Studio:SDK Java untuk pengenalan ucapan non-real-time Paraformer

Last Updated:Sep 09, 2026

Topik ini menjelaskan parameter dan detail antarmuka SDK Java untuk pengenalan ucapan non-real-time Paraformer.

PentingAlibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing). Domain khusus baru ini memberikan performa unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi dari dashscope.aliyuncs.com ke {WorkspaceId}.cn-beijing.maas.aliyuncs.com.

Ganti {WorkspaceId} dengan Workspace ID Anda yang sebenarnya. Domain yang ada tetap berfungsi penuh.

PentingDokumen ini hanya berlaku di China (Beijing). Untuk menggunakan model, Anda harus menggunakan Kunci API dari China (Beijing).

Panduan pengguna:Pengenalan ucapan non-real-time

Prasyarat

Anda telah mengaktifkan layanan dan Mendapatkan Kunci API. Harap Konfigurasikan Kunci API sebagai variabel lingkungan alih-alih melakukan hardcoding di kode Anda untuk mencegah risiko keamanan akibat kebocoran kode.

CatatanSaat Anda perlu memberikan akses sementara kepada aplikasi atau pengguna pihak ketiga, atau saat ingin mengontrol secara ketat operasi berisiko tinggi seperti mengakses atau menghapus data sensitif, kami merekomendasikan penggunaan token otentikasi sementara.

Dibandingkan dengan Kunci API jangka panjang, token otentikasi sementara memiliki periode validitas singkat (60 detik) dan keamanan lebih tinggi, sehingga cocok untuk skenario panggilan sementara dan secara efektif mengurangi risiko kebocoran Kunci API.

Penggunaan: Dalam kode Anda, ganti Kunci API yang awalnya digunakan untuk otentikasi dengan token otentikasi sementara yang diperoleh.

Mulai cepat

Kelas inti (Transcription) menyediakan antarmuka untuk mengirimkan tugas secara asinkron, menunggu secara sinkron hingga tugas selesai, dan mengkueri hasil tugas secara asinkron. Anda dapat menggunakan dua metode pemanggilan berikut untuk pengenalan ucapan non-real-time:

  • Kirim asinkron + tunggu sinkron: Setelah mengirimkan tugas, thread saat ini diblokir hingga tugas selesai dan hasil pengenalan diperoleh.
  • Kirim asinkron + kueri asinkron: Setelah mengirimkan tugas, Anda dapat mengkueri hasil tugas kapan saja dengan memanggil antarmuka kueri.

Kirim asinkron + tunggu sinkron

  1. Konfigurasikan Parameter permintaan.

  2. Buat instans Kelas inti (Transcription).

  3. Panggil metode asyncCall dari Kelas inti (Transcription) untuk mengirimkan tugas secara asinkron.

    Catatan

    • Layanan transkripsi file memproses tugas yang dikirim melalui API berdasarkan prinsip best-effort. Setelah dikirim, tugas masuk ke status antrian (PENDING). Waktu antrian bergantung pada panjang antrian dan durasi file serta tidak dapat diprediksi secara tepat, tetapi biasanya selesai dalam beberapa menit. Setelah pemrosesan dimulai, pengenalan ucapan selesai dengan kecepatan ratusan kali lipat dari kecepatan real-time.
    • Setelah setiap tugas selesai, hasil pengenalan dan tautan unduh URL berlaku selama 24 jam. Setelah kedaluwarsa, Anda tidak dapat mengkueri tugas atau mengunduh hasil melalui URL yang sebelumnya diberikan.
  4. Panggil metode wait dari Kelas inti (Transcription) untuk menunggu secara sinkron hingga tugas selesai.

    Status tugas mencakup PENDING, RUNNING, SUCCEEDED, dan FAILED. Saat tugas berada dalam status PENDING atau RUNNING, antarmuka wait diblokir. Saat tugas berada dalam status SUCCEEDED atau FAILED, antarmuka wait tidak lagi diblokir dan mengembalikan hasil tugas.

    wait mengembalikan Hasil tugas (TranscriptionResult).

Klik untuk melihat contoh lengkap

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // Konfigurasi berikut ditujukan untuk wilayah China (Beijing). Ganti "{WorkspaceId}" dengan Workspace ID Anda yang sebenarnya. Konfigurasi bervariasi berdasarkan wilayah.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
        // Buat parameter permintaan transkripsi
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // Jika Kunci API tidak dikonfigurasi dalam variabel lingkungan, ganti apiKey dengan Kunci API Anda sendiri
                        //.apiKey("apikey")
                        .model("paraformer-v2")
                        // "language_hints" hanya didukung oleh model paraformer-v2
                        .parameter("language_hints", new String[]{"zh", "en"})
                        .fileUrls(
                                Arrays.asList(
                                        "{YOUR_AUDIO_URL}"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // Kirim permintaan transkripsi
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // Blokir dan tunggu hingga tugas selesai lalu dapatkan hasilnya
            result = transcription.wait(
                    TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
            // Cetak hasil
            System.out.println(result.getOutput());
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

Kirim asinkron + kueri asinkron

  1. Konfigurasikan Parameter permintaan.

  2. Buat instans Kelas inti (Transcription).

  3. Panggil metode asyncCall dari Kelas inti (Transcription) untuk mengirimkan tugas secara asinkron.

    Catatan

    • Layanan transkripsi file memproses tugas yang dikirim melalui API berdasarkan prinsip best-effort. Setelah dikirim, tugas masuk ke status antrian (PENDING). Waktu antrian bergantung pada panjang antrian dan durasi file serta tidak dapat diprediksi secara tepat, tetapi biasanya selesai dalam beberapa menit. Setelah pemrosesan dimulai, pengenalan ucapan selesai dengan kecepatan ratusan kali lipat dari kecepatan real-time.
    • Setelah setiap tugas selesai, hasil pengenalan dan tautan unduh URL berlaku selama 24 jam. Setelah kedaluwarsa, Anda tidak dapat mengkueri tugas atau mengunduh hasil melalui URL yang sebelumnya diberikan.
  4. Lakukan loop dengan memanggil metode fetch dari Kelas inti (Transcription) hingga Anda memperoleh hasil tugas akhir.

    Saat status tugas adalah SUCCEEDED atau FAILED, hentikan polling dan proses hasilnya.

    fetch mengembalikan Hasil tugas (TranscriptionResult).

Klik untuk melihat contoh lengkap

import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.common.TaskStatus;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // Konfigurasi berikut ditujukan untuk wilayah China (Beijing). Ganti "{WorkspaceId}" dengan Workspace ID Anda yang sebenarnya. Konfigurasi bervariasi berdasarkan wilayah.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
        // Buat parameter permintaan transkripsi
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // Jika Kunci API tidak dikonfigurasi dalam variabel lingkungan, ganti apiKey dengan Kunci API Anda sendiri
                        //.apiKey("apikey")
                        .model("paraformer-v2")
                        // "language_hints" hanya didukung oleh model paraformer-v2
                        .parameter("language_hints", new String[]{"zh", "en"})
                        .fileUrls(
                                Arrays.asList(
                                        "{YOUR_AUDIO_URL}"))
                        .build();
        try {
            Transcription transcription = new Transcription();
            // Kirim permintaan transkripsi
            TranscriptionResult result = transcription.asyncCall(param);
            System.out.println("RequestId: " + result.getRequestId());
            // Loop untuk mendapatkan hasil tugas hingga tugas selesai
            while (true) {
                result = transcription.fetch(TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId()));
                if (result.getTaskStatus() == TaskStatus.SUCCEEDED || result.getTaskStatus() == TaskStatus.FAILED) {
                    break;
                }
                Thread.sleep(1000);
            }
            // Cetak hasil
            System.out.println(result.getOutput());
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

Parameter permintaan

Parameter permintaan dikonfigurasi melalui metode berantai dari TranscriptionParam.

Klik untuk melihat contoh

TranscriptionParam param = TranscriptionParam.builder()
  .model("paraformer-v2")
  // "language_hints" hanya didukung oleh model paraformer-v2
  .parameter("language_hints", new String[]{"zh", "en"})
  .fileUrls(
          Arrays.asList(
                  "{YOUR_AUDIO_URL}"))
  .build();
ParameterTipeBawaanWajibDeskripsi

model

String

Ya

Menentukan nama model Paraformer untuk transkripsi file audio/video. Lihat Model yang didukung.

fileUrls

List<String>

Ya

Daftar URL file audio/video untuk transkripsi. Mendukung protokol HTTP/HTTPS. Hanya satu URL yang didukung per permintaan.

Jika file audio disimpan di Alibaba Cloud OSS, SDK tidak mendukung URL sementara dengan awalan oss://.

vocabularyId

String

Tidak

ID hot word terbaru. Mendukung model seri v2 terbaru dengan konfigurasi bahasa. Hot word yang terkait dengan ID ini berlaku untuk pengenalan ucapan ini. Dinonaktifkan secara bawaan. Untuk petunjuk penggunaan, lihat Hotword kustom.

channelId

List<Integer>

[0]

Tidak

Menentukan indeks track audio yang akan dikenali dalam file audio multi-track. Indeks dimulai dari 0. Misalnya, [0] berarti mengenali track pertama, dan [0, 1] berarti mengenali track pertama dan kedua secara simultan. Jika parameter ini dihilangkan, hanya track pertama yang diproses secara bawaan.

PentingSetiap track yang ditentukan ditagih secara independen. Misalnya, meminta [0, 1] untuk satu file dikenai dua biaya terpisah.

disfluencyRemovalEnabled

Boolean

false

Tidak

Menyaring kata pengisi. Dinonaktifkan secara bawaan.

timestampAlignmentEnabled

Boolean

false

Tidak

Apakah akan mengaktifkan fitur penyelarasan timestamp. Dinonaktifkan secara bawaan.

specialWordFilter

String

Tidak

Menentukan kata sensitif yang akan diproses selama pengenalan ucapan dan mendukung pengaturan metode pemrosesan berbeda untuk kata sensitif berbeda.

Jika parameter ini tidak diberikan, sistem menggunakan logika penyaringan kata sensitif bawaan, dan kata-kata yang cocok dengan daftar kata sensitif Alibaba Cloud Model Studio dalam hasil pengenalan akan diganti dengan * dengan panjang yang sama.

Jika parameter ini diberikan, strategi pemrosesan kata sensitif berikut dapat diterapkan:

  • Ganti dengan *: Ganti kata sensitif yang cocok dengan * dengan panjang yang sama.
  • Filter langsung: Hapus sepenuhnya kata sensitif yang cocok dari hasil pengenalan.

Nilai parameter ini harus berupa string JSON dengan struktur berikut:

{
  "filter_with_signed": {
    "word_list": ["test"]
  },
  "filter_with_empty": {
    "word_list": ["start", "happen"]
  },
  "system_reserved_filter": true
}

Deskripsi bidang JSON:

  • filter_with_signed

    • Tipe: Object.

    • Wajib: Tidak.

    • Deskripsi: Mengonfigurasi daftar kata sensitif yang akan diganti dengan *. Kata yang cocok dalam hasil pengenalan akan diganti dengan * dengan panjang yang sama.

    • Contoh: Menggunakan JSON di atas, hasil pengenalan ucapan untuk "Help me test this code" akan menjadi "Help me **** this code".

    • Bidang internal:

      • word_list: Array string yang mencantumkan kata sensitif yang akan diganti.
  • filter_with_empty

    • Tipe: Object.

    • Wajib: Tidak.

    • Deskripsi: Mengonfigurasi daftar kata sensitif yang akan dihapus (difilter) dari hasil pengenalan. Kata yang cocok akan dihapus sepenuhnya.

    • Contoh: Menggunakan JSON di atas, hasil pengenalan ucapan untuk "The game is about to start, right?" akan menjadi "The game is about to, right?".

    • Bidang internal:

      • word_list: Array string yang mencantumkan kata sensitif yang akan dihapus sepenuhnya (difilter).
  • system_reserved_filter

    • Tipe: Boolean.
    • Wajib: Tidak.
    • Bawaan: true.
    • Deskripsi: Apakah akan mengaktifkan aturan kata sensitif bawaan sistem. Saat diatur ke true, logika penyaringan kata sensitif bawaan sistem juga diaktifkan, dan kata-kata yang cocok dengan daftar kata sensitif Alibaba Cloud Model Studio dalam hasil pengenalan akan diganti dengan * dengan panjang yang sama.

language_hints

String[]

["zh", "en"]

Tidak

Menentukan kode bahasa dari ucapan yang akan dikenali.

Parameter ini hanya berlaku untuk model paraformer-v2.

Kode bahasa yang didukung:

  • zh: Bahasa Tionghoa
  • en: Bahasa Inggris
  • ja: Bahasa Jepang
  • yue: Bahasa Kanton
  • ko: Bahasa Korea
  • de: Bahasa Jerman
  • fr: Bahasa Prancis
  • ru: Bahasa Rusia

Catatanlanguage_hints perlu diatur melalui metode parameter atau metode parameters dari instans TranscriptionParam:

TranscriptionParam param = TranscriptionParam.builder()
  // "language_hints" hanya didukung oleh model paraformer-v2
  .model("paraformer-v2")
  .parameter("language_hints", new String[]{"zh", "en"})
  .build();
TranscriptionParam param = TranscriptionParam.builder()
  // "language_hints" hanya didukung oleh model paraformer-v2
  .model("paraformer-v2")
  .parameters(Collections.singletonMap("language_hints", new String[]{"zh", "en"}))
  .build();

diarizationEnabled

Boolean

false

Tidak

Diarisasi pembicara otomatis. Dinonaktifkan secara bawaan.

Hanya berlaku untuk audio mono. Audio multi-channel tidak mendukung diarisasi pembicara.

Saat fitur ini diaktifkan, hasil pengenalan akan menyertakan bidang speaker_id untuk membedakan pembicara berbeda.

CatatanJika diarisasi pembicara diaktifkan, disarankan agar durasi audio tidak melebihi 2 jam, jika tidak pengenalan mungkin gagal atau timeout.

Untuk contoh speaker_id, lihat Deskripsi hasil pengenalan.

speakerCount

Integer

Tidak

Nilai referensi untuk jumlah pembicara. Nilai yang valid: bilangan bulat dari 2 hingga 100 (inklusif).

Berlaku saat diarisasi pembicara diaktifkan (diarizationEnabled diatur ke true).

Secara bawaan, sistem secara otomatis menentukan jumlah pembicara. Jika parameter ini dikonfigurasi, parameter ini hanya berfungsi sebagai petunjuk bagi algoritma untuk mencoba menghasilkan jumlah pembicara yang ditentukan, tetapi jumlah pastinya tidak dijamin.

apiKey

String

Tidak

Kunci API. Jika Kunci API sudah dikonfigurasi dalam variabel lingkungan, Anda tidak perlu mengaturnya dalam kode. Jika tidak, Anda harus mengaturnya dalam kode.

Respons

Hasil tugas (TranscriptionResult)

TranscriptionResult membungkus hasil tugas saat ini.

Antarmuka/MetodeParameterNilai kembaliDeskripsi
public String getRequestId()

Tidak ada

requestId

Mendapatkan requestId.

public String getTaskId()

Tidak ada

taskId

Mendapatkan taskId.

public TaskStatus getTaskStatus()

Tidak ada

TaskStatus, status tugas

Mendapatkan status tugas.

TaskStatus adalah kelas enum. Anda hanya perlu fokus pada empat status berikut: PENDING, RUNNING, SUCCEEDED, dan FAILED.

CatatanSaat tugas berisi beberapa subtugas, selama ada satu subtugas yang berhasil, status tugas keseluruhan ditandai sebagai SUCCEEDED. Anda perlu memeriksa bidang subtask_status untuk menentukan hasil setiap subtugas.

public List<TranscriptionTaskResult> getResults()

Tidak ada

Hasil subtugas (TranscriptionTaskResult)

Mendapatkan Hasil subtugas (TranscriptionTaskResult).

Setiap tugas mengenali satu atau beberapa file audio. File audio berbeda diproses dalam subtugas berbeda, sehingga setiap tugas berkorespondensi dengan satu atau beberapa subtugas.

public JsonObject getOutput()

Tidak ada

Hasil tugas dalam format JSON

Mendapatkan hasil tugas.

Hasilnya dalam format JSON. Jika Anda menggunakan antarmuka getOutput untuk mendapatkan hasil tugas, Anda perlu menguraikannya sendiri.

Klik untuk melihat contoh JSON

Contoh normal
{
    "task_id":"0795ff8c-b666-4e91-bb8b-xxx",
    "task_status":"SUCCEEDED",
    "submit_time":"2025-02-13 16:12:09.109",
    "scheduled_time":"2025-02-13 16:12:09.128",
    "end_time":"2025-02-13 16:12:10.189",
    "results":[
        {
            "file_url":"{YOUR_AUDIO_URL}",
            "transcription_url":"https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/prod/paraformer-v2/20250213/16%3A12/3baafe5f-d09d-46c6-8b01-724927670edb-1.json?Expires=1739520730&OSSAccessKeyId=YOUR_ACCESS_KEY_ID&Signature=YOUR_SIGNATURE",
            "subtask_status":"SUCCEEDED"
        }
    ],
    "task_metrics":{
        "TOTAL":1,
        "SUCCEEDED":1,
        "FAILED":0
    }
}
Contoh error

"code" adalah kode kesalahan dan "message" adalah pesan kesalahan. Kedua bidang ini hanya muncul dalam skenario error. Anda dapat menggunakannya untuk troubleshooting dengan merujuk ke Kode kesalahan.

{
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "task_status": "SUCCEEDED",
    "submit_time": "2024-12-16 16:30:59.170",
    "scheduled_time": "2024-12-16 16:30:59.204",
    "end_time": "2024-12-16 16:31:02.375",
    "results": [
        {
            "file_url": "{YOUR_AUDIO_URL}",
            "code": "InvalidFile.DownloadFailed",
            "message": "File audio tidak dapat diunduh.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

Hasil subtugas (TranscriptionTaskResult)

TranscriptionTaskResult membungkus hasil subtugas. Satu subtugas mengenali satu file audio.

Antarmuka/MetodeParameterNilai kembaliDeskripsi
public String getFileUrl()

Tidak ada

URL file audio yang dikenali

Mendapatkan URL file audio yang dikenali.

public String getTranscriptionUrl()

Tidak ada

URL hasil pengenalan

Mendapatkan URL hasil pengenalan. URL ini berlaku selama 24 jam. Setelah kedaluwarsa, Anda tidak dapat mengkueri tugas atau mengunduh hasil melalui URL yang sebelumnya diberikan.

Hasil pengenalan disimpan sebagai file JSON. Anda dapat mengunduh file tersebut melalui URL di atas atau langsung membaca isinya melalui permintaan HTTP.

Untuk makna setiap bidang dalam data JSON, lihat Deskripsi hasil pengenalan.

public TaskStatus getSubTaskStatus()

Tidak ada

TaskStatus, status subtugas

Mendapatkan status subtugas.

TaskStatus adalah kelas enum. Anda hanya perlu fokus pada empat status berikut: PENDING, RUNNING, SUCCEEDED, dan FAILED.

public String getMessage()

Tidak ada

Informasi penting selama eksekusi tugas, yang mungkin kosong

Mendapatkan informasi penting selama eksekusi tugas.

Saat tugas gagal, Anda dapat memeriksa konten ini untuk menganalisis penyebabnya.

Deskripsi hasil pengenalan

Hasil pengenalan disimpan sebagai file JSON.

Klik untuk melihat contoh hasil pengenalan

{
    "file_url":"{YOUR_AUDIO_URL}",
    "properties":{
        "audio_format":"pcm_s16le",
        "channels":[
            0
        ],
        "original_sampling_rate":16000,
        "original_duration_in_milliseconds":3834
    },
    "transcripts":[
        {
            "channel_id":0,
            "content_duration_in_milliseconds":3720,
            "text":"Hello world, this is the Alibaba speech laboratory.",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"Hello world, this is the Alibaba speech laboratory.",
                    "sentence_id":1,
                    "speaker_id":0, //Bidang ini hanya ditampilkan saat diarisasi pembicara otomatis diaktifkan
                    "words":[
                        {
                            "begin_time":100,
                            "end_time":596,
                            "text":"Hello ",
                            "punctuation":""
                        },
                        {
                            "begin_time":596,
                            "end_time":844,
                            "text":"world",
                            "punctuation":", "
                        }
                        // Konten lain dihilangkan di sini
                    ]
                }
            ]
        }
    ]
}

Parameter utama adalah sebagai berikut:

Parameter

Type

Deskripsi

audio_format

string

Format audio file sumber.

channels

array[integer]

Informasi indeks track audio file sumber. Mengembalikan [0] untuk audio mono, [0, 1] untuk audio dual-track, dan seterusnya.

original_sampling_rate

integer

Frekuensi sampling (Hz) audio dalam file sumber.

original_duration

integer

Durasi audio asli (ms) file sumber.

channel_id

integer

Indeks track audio dari hasil transkripsi, dimulai dari 0.

content_duration

integer

Durasi (ms) konten yang diidentifikasi sebagai ucapan dalam track audio.

Layanan model pengenalan ucapan Paraformer hanya mentranskripsi dan mengukur konten yang diidentifikasi sebagai ucapan dalam track audio, dan menagih sesuai dengan itu. Konten non-ucapan tidak diukur maupun ditagih. Biasanya, durasi konten ucapan lebih pendek daripada durasi audio asli. Karena penentuan apakah konten ucapan ada dilakukan oleh model AI, mungkin terjadi sedikit penyimpangan dari situasi aktual.

transcript

string

Hasil transkripsi ucapan tingkat paragraf.

sentences

array

Hasil transkripsi ucapan tingkat kalimat.

words

array

Hasil transkripsi ucapan tingkat kata.

begin_time

integer

Timestamp mulai (ms).

end_time

integer

Timestamp akhir (ms).

text

string

Hasil transkripsi ucapan.

speaker_id

integer

Indeks pembicara saat ini, dimulai dari 0, digunakan untuk membedakan pembicara berbeda.

Bidang ini hanya ditampilkan dalam hasil pengenalan saat diarisasi pembicara diaktifkan.

punctuation

string

Tanda baca yang diprediksi setelah kata (jika ada).

Antarmuka utama

Kelas parameter kueri tugas (TranscriptionQueryParam)

TranscriptionQueryParam digunakan saat menunggu tugas selesai (memanggil metode wait dari Transcription) atau mengkueri hasil tugas (memanggil metode fetch dari Transcription).

Buat instans TranscriptionQueryParam melalui metode statis FromTranscriptionParam.

Klik untuk melihat contoh

// Buat parameter permintaan transkripsi
TranscriptionParam param =
        TranscriptionParam.builder()
                // Jika Kunci API tidak dikonfigurasi dalam variabel lingkungan, ganti apiKey dengan Kunci API Anda sendiri
                //.apiKey("apikey")
                .model("paraformer-v2")
                // "language_hints" hanya didukung oleh model paraformer-v2
                .parameter("language_hints", new String[]{"zh", "en"})
                .fileUrls(
                        Arrays.asList(
                                "{YOUR_AUDIO_URL}"))
                .build();
try {
    Transcription transcription = new Transcription();
    // Kirim permintaan transkripsi
    TranscriptionResult result = transcription.asyncCall(param);
    System.out.println("RequestId: " + result.getRequestId());
    TranscriptionQueryParam queryParam = TranscriptionQueryParam.FromTranscriptionParam(param, result.getTaskId());

} catch (Exception e) {
    System.out.println("error: " + e);
}
Antarmuka/MetodeParameterNilai kembaliDeskripsi
public static TranscriptionQueryParam FromTranscriptionParam(TranscriptionParam param, String taskId)
  • param: Instans TranscriptionParam
  • taskId: ID tugas

Instans TranscriptionQueryParam

Membuat instans TranscriptionQueryParam.

Kelas inti (Transcription)

Transcription dapat diimpor dengan "import com.alibaba.dashscope.audio.asr.transcription.*;". Antarmuka utamanya adalah sebagai berikut:

Antarmuka/MetodeParameterNilai kembaliDeskripsi
public TranscriptionResult asyncCall(TranscriptionParam param)

param: Parameter pengenalan ucapan, instans TranscriptionParam

Hasil tugas (TranscriptionResult)

Mengirimkan tugas pengenalan ucapan secara asinkron.

public TranscriptionResult wait(TranscriptionQueryParam queryParam)

queryParam: Instans TranscriptionQueryParam

Hasil tugas (TranscriptionResult)

Memblokir thread saat ini hingga tugas asinkron selesai (status tugas adalah SUCCEEDED atau FAILED).

public TranscriptionResult fetch(TranscriptionQueryParam queryParam)

queryParam: Instans TranscriptionQueryParam

Hasil tugas (TranscriptionResult)

Mengkueri hasil tugas saat ini secara asinkron.

Kode kesalahan

Jika Anda mengalami kesalahan, lihat Kode kesalahan untuk troubleshooting.

Jika masalah berlanjut, bergabunglah dengan komunitas developer untuk melaporkan masalah dan memberikan Request ID untuk investigasi lebih lanjut.

Saat tugas berisi beberapa subtugas, selama ada satu subtugas yang berhasil, status tugas keseluruhan ditandai sebagai SUCCEEDED. Anda perlu memeriksa bidang subtask_status untuk menentukan hasil setiap subtugas.

Contoh respons error:

{
    "task_id": "7bac899c-06ec-4a79-8875-xxxxxxxxxxxx",
    "task_status": "SUCCEEDED",
    "submit_time": "2024-12-16 16:30:59.170",
    "scheduled_time": "2024-12-16 16:30:59.204",
    "end_time": "2024-12-16 16:31:02.375",
    "results": [
        {
            "file_url": "{YOUR_AUDIO_URL}",
            "code": "InvalidFile.DownloadFailed",
            "message": "File audio tidak dapat diunduh.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

Lebih banyak contoh

Untuk lebih banyak contoh, lihat GitHub.

FAQ

Pertanyaan fitur

T: Apakah mendukung audio terenkode Base64?

Tidak. Audio yang dienkripsi Base64 tidak didukung. Hanya audio yang dapat diakses melalui URL publik yang didukung. Aliran biner dan pengenalan file lokal langsung tidak didukung.

T: Bagaimana cara menyediakan file audio sebagai URL publik?

Umumnya, ikuti langkah-langkah berikut (ini memberikan pendekatan umum; spesifiknya bervariasi berdasarkan produk penyimpanan. Kami merekomendasikan mengunggah audio ke Alibaba Cloud OSS):

1. Pilih metode penyimpanan dan hosting

Misalnya:

  • Layanan Penyimpanan Objek (direkomendasikan):

    • Gunakan layanan penyimpanan objek penyedia cloud (seperti Alibaba Cloud OSS) untuk mengunggah file audio ke bucket dan mengaturnya ke akses publik.
    • Keuntungan: Ketersediaan tinggi, dukungan akselerasi CDN, manajemen mudah.
  • Server web:

    • Tempatkan file audio di server web yang mendukung akses HTTP/HTTPS (seperti Nginx atau Apache).
    • Keuntungan: Cocok untuk proyek kecil atau pengujian lokal.
  • Content Delivery Network (CDN):

    • Host file audio di CDN dan akses melalui URL yang disediakan CDN.
    • Keuntungan: Pengiriman file dipercepat, cocok untuk skenario konkurensi tinggi.

2. Unggah file audio

Unggah file audio berdasarkan metode penyimpanan/hosting yang Anda pilih, misalnya:

  • Layanan Penyimpanan Objek:

    • Login ke konsol penyedia cloud dan buat bucket.
    • Unggah file audio dan atur izin file ke "baca publik" atau hasilkan tautan akses sementara.
  • Server web:

    • Tempatkan file audio di direktori yang ditentukan server (seperti /var/www/html/audio/).
    • Pastikan file dapat diakses melalui HTTP/HTTPS.

3. Hasilkan URL publik

Misalnya:

  • Layanan Penyimpanan Objek:

    • Setelah diunggah, sistem secara otomatis menghasilkan URL akses publik (biasanya dalam format https://<bucket-name>.<region>.aliyuncs.com/<file-name>).
    • Jika Anda membutuhkan domain yang lebih ramah pengguna, Anda dapat mengikat domain kustom dan mengaktifkan HTTPS.
  • Server web:

    • URL akses file biasanya merupakan alamat server ditambah jalur file (seperti https://your-domain.com/audio/file.mp3).
  • CDN:

    • Setelah mengonfigurasi akselerasi CDN, gunakan URL yang disediakan CDN (seperti https://cdn.your-domain.com/audio/file.mp3).

4. Verifikasi aksesibilitas URL

Di lingkungan jaringan publik, pastikan URL yang dihasilkan dapat diakses, misalnya:

  • Buka URL di browser dan periksa apakah file audio dapat diputar.
  • Gunakan alat (seperti curl atau Postman) untuk memverifikasi apakah URL mengembalikan respons HTTP yang benar (kode status 200).

Saat menggunakan SDK, jika file audio disimpan di Alibaba Cloud OSS, URL sementara dengan awalan oss:// tidak didukung.

Saat menggunakan RESTful API, jika file audio disimpan di Alibaba Cloud OSS, URL sementara dengan awalan oss:// didukung:

  • URL sementara berlaku selama 48 jam dan tidak dapat digunakan setelah kedaluwarsa. Jangan gunakan di lingkungan produksi.
  • API untuk mendapatkan kredensial unggah dibatasi hingga 100 QPS dan tidak mendukung penskalaan keluar. Jangan gunakan di lingkungan produksi, skenario konkurensi tinggi, atau skenario uji stres.
  • Untuk lingkungan produksi, gunakan layanan penyimpanan stabil seperti OSS untuk memastikan ketersediaan file jangka panjang dan menghindari masalah pembatasan laju.

T: Berapa lama waktu yang dibutuhkan untuk mendapatkan hasil pengenalan?

Setelah dikirim, tugas masuk ke status antrian (PENDING). Waktu antrian bergantung pada panjang antrian dan durasi file serta tidak dapat diprediksi secara tepat, tetapi biasanya selesai dalam beberapa menit. Harap tunggu dengan sabar. File audio yang lebih panjang memerlukan waktu pemrosesan lebih lama.

Troubleshooting

Jika Anda mengalami kesalahan kode, lakukan troubleshooting berdasarkan informasi di Kode kesalahan.

T: Apa yang harus dilakukan jika hasil pengenalan dan pemutaran audio tidak sinkron?

Atur Parameter permintaan timestampAlignmentEnabled ke true untuk mengaktifkan fitur penyelarasan timestamp, yang menyinkronkan hasil pengenalan dengan pemutaran audio.

T: Tidak dapat mendapatkan hasil setelah polling terus-menerus?

Ini mungkin karena pembatasan laju. Harap tunggu dengan sabar. Jika Anda membutuhkan ekspansi kapasitas, bergabunglah dengan komunitas developer untuk mengajukan permohonan.

T: Mengapa tidak ada hasil pengenalan (tidak dapat mengenali ucapan)?

  • Periksa apakah audio memenuhi persyaratan (format, frekuensi sampling).
  • Jika Anda menggunakan model paraformer-v2, periksa apakah pengaturan language_hints sudah benar.
  • Jika tidak ada yang menyelesaikan masalah, Anda dapat menyesuaikan hot word untuk meningkatkan pengenalan kata-kata tertentu.

Pertanyaan lainnya

Lihat GitHub QA.