Skip to main content
Pengenalan Ujaran Non-Waktu-Nyata (Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR)

SDK Java untuk pengenalan ucapan non-real-time Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR

Topik ini menjelaskan parameter dan detail API dari SDK Java untuk pengenalan ucapan non-real-time Qwen-Audio-3.0-ASR-Flash-Filetrans/Fun-ASR.

Panduan pengguna: Pengenalan ucapan non-real-time. Untuk persyaratan input seperti format audio yang didukung, batas ukuran file, dan batas durasi, lihat Spesifikasi audio.

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.
Saat 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 pemanggilan 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 menjalankan pengenalan ucapan non-real-time dengan salah satu dari dua cara berikut:
  • Kirimkan tugas secara asinkron dan tunggu secara sinkron hingga selesai: setelah Anda mengirimkan tugas, thread saat ini diblokir hingga tugas selesai dan hasil pengenalan dikembalikan.
  • Kirimkan tugas secara asinkron dan kueri hasil tugas secara asinkron: setelah Anda mengirimkan tugas, panggil antarmuka kueri untuk mendapatkan hasil tugas kapan pun Anda membutuhkannya.

Kirimkan tugas secara asinkron dan tunggu secara sinkron hingga selesai

  1. Konfigurasikan Parameter permintaan.
  2. Buat instans Kelas inti (Transcription).
  3. Panggil metode asyncCall dari Kelas inti (Transcription) untuk mengirimkan tugas secara asinkron.
    • Layanan transkripsi file memproses tugas yang dikirim melalui API berdasarkan prinsip best-effort. Setelah Anda mengirimkan tugas, tugas tersebut masuk ke status antrian (PENDING). Waktu antrian bergantung pada panjang antrian dan durasi file, sehingga tidak dapat ditentukan secara pasti, tetapi biasanya dalam hitungan beberapa menit. Setelah pemrosesan dimulai, pengenalan ucapan selesai dengan kecepatan ratusan kali lebih cepat daripada waktu nyata.
    • Setelah setiap tugas selesai, hasil pengenalan dan URL unduhan berlaku selama 24 jam. Setelah masa berlaku habis, Anda tidak dapat lagi mengkueri tugas atau mengunduh hasil melalui URL yang dikembalikan dalam kueri sebelumnya.
  4. Panggil metode wait dari Kelas inti (Transcription) untuk menunggu secara sinkron hingga tugas selesai. Tugas dapat berada dalam status PENDING, RUNNING, SUCCEEDED, atau FAILED. Selama tugas berada dalam status PENDING atau RUNNING, antarmuka wait akan memblokir. Ketika tugas mencapai status SUCCEEDED atau FAILED, antarmuka wait berhenti memblokir dan mengembalikan hasil tugas. wait mengembalikan Hasil tugas (TranscriptionResult).
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // Berikut adalah konfigurasi untuk wilayah Singapura. Saat memanggil, ganti "{WorkspaceId}" dengan ID ruang kerja aktual Anda. Konfigurasi berbeda-beda di tiap wilayah.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // Buat parameter permintaan transkripsi
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                        // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
                        //.apiKey("apikey")
                        .model("qwen-audio-3.0-asr-flash-filetrans") // Ini menggunakan qwen-audio-3.0-asr-flash-filetrans sebagai contoh; ubah nama model sesuai kebutuhan. Daftar model: https://www.alibabacloud.com/help/zh/model-studio/models
                        .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 hasilnya
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

Kirimkan tugas secara asinkron dan kueri hasil tugas secara asinkron

  1. Konfigurasikan Parameter permintaan.
  2. Buat instans Kelas inti (Transcription).
  3. Panggil metode asyncCall dari Kelas inti (Transcription) untuk mengirimkan tugas secara asinkron.
    • Layanan transkripsi file memproses tugas yang dikirim melalui API berdasarkan prinsip best-effort. Setelah Anda mengirimkan tugas, tugas tersebut masuk ke status antrian (PENDING). Waktu antrian bergantung pada panjang antrian dan durasi file, sehingga tidak dapat ditentukan secara pasti, tetapi biasanya dalam hitungan beberapa menit. Setelah pemrosesan dimulai, pengenalan ucapan selesai dengan kecepatan ratusan kali lebih cepat daripada waktu nyata.
    • Setelah setiap tugas selesai, hasil pengenalan dan URL unduhan berlaku selama 24 jam. Setelah masa berlaku habis, Anda tidak dapat lagi mengkueri tugas atau mengunduh hasil melalui URL yang dikembalikan dalam kueri sebelumnya.
  4. Panggil metode fetch dari Kelas inti (Transcription) dalam loop hingga Anda mendapatkan hasil tugas akhir. Saat status tugas adalah SUCCEEDED atau FAILED, hentikan polling dan proses hasilnya. fetch mengembalikan Hasil tugas (TranscriptionResult).
import com.alibaba.dashscope.audio.asr.transcription.*;
import com.alibaba.dashscope.common.TaskStatus;
import com.alibaba.dashscope.utils.Constants;
import com.google.gson.*;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // Berikut adalah konfigurasi untuk wilayah Singapura. Saat memanggil, ganti "{WorkspaceId}" dengan ID ruang kerja aktual Anda. Konfigurasi berbeda-beda di tiap wilayah.
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
        // Buat parameter permintaan transkripsi
        TranscriptionParam param =
                TranscriptionParam.builder()
                        // Kunci API berbeda antara wilayah Singapura dan Beijing. Dapatkan Kunci API: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                        // Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Studio Model Anda: .apiKey("sk-xxx")
                        //.apiKey("apikey")
                        .model("qwen-audio-3.0-asr-flash-filetrans") // Ini menggunakan qwen-audio-3.0-asr-flash-filetrans sebagai contoh; ubah nama model sesuai kebutuhan. Daftar model: https://www.alibabacloud.com/help/zh/model-studio/models
                        .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());
            // Polling hasil tugas dalam loop 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 hasilnya
            System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(result.getOutput()));
        } catch (Exception e) {
            System.out.println("error: " + e);
        }
        System.exit(0);
    }
}

Titik akhir

Secara default, SDK menggunakan titik akhir wilayah China (Beijing). Untuk beralih ke wilayah lain, modifikasi Constants.baseHttpApiUrl sebelum inisialisasi.
  • Singapura
  • China (Beijing)
https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1Saat melakukan panggilan, ganti {WorkspaceId} dengan ID Ruang Kerja aktual Anda.
Alibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing) dan Singapura. Domain khusus baru ini memberikan performa unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:
  • China (Beijing): dari dashscope.aliyuncs.com ke {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: dari dashscope-intl.aliyuncs.com ke {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Ganti {WorkspaceId} dengan ID Ruang Kerja aktual Anda. Domain yang ada tetap berfungsi sepenuhnya.
Beralih ke wilayah Singapura:
import com.alibaba.dashscope.utils.Constants;

// Atur ini di awal kode Anda
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
Catatan:
  • Kunci API berbeda di tiap wilayah. Pastikan Anda menggunakan Kunci API untuk wilayah target.
  • Pengaturan wilayah bersifat global dan memengaruhi panggilan API semua SDK DashScope.

Parameter permintaan

Konfigurasikan parameter permintaan menggunakan metode berantai dari TranscriptionParam.
TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .fileUrls(
          Arrays.asList(
                  "{YOUR_AUDIO_URL}"))
  .build();
ParameterTipeWajibDeskripsi
modelStringYaNama model. Nilai yang didukung mencakup keluarga model Qwen-Audio-3.0-ASR-Flash-Filetrans dan Fun-ASR. Untuk detailnya, lihat Model dan wilayah yang didukung.
fileUrlsList<String>YaDaftar URL file audio atau video yang akan ditranskripsi. HTTP dan HTTPS didukung. Satu permintaan hanya mendukung satu URL. Untuk persyaratan input seperti format audio yang didukung, batas ukuran file, dan batas durasi, lihat Spesifikasi audio.Jika rekaman disimpan di Alibaba Cloud OSS, RESTful API mendukung URL sementara dengan awalan oss://, sedangkan SDK tidak mendukung URL sementara dengan awalan oss://.
  • URL sementara berlaku selama 48 jam dan tidak dapat digunakan setelah masa berlaku habis. Jangan gunakan di lingkungan produksi.
  • Antarmuka unggah kredensial memiliki Pembatasan laju hingga 100 QPS dan tidak dapat diskalakan. Jangan gunakan di skenario produksi, konkurensi tinggi, atau uji stres.
  • Untuk produksi, gunakan penyimpanan stabil seperti Alibaba Cloud OSS agar file tersedia jangka panjang dan menghindari Pembatasan laju.
  • Jika URL file audio yang diatur ke URL publik sementara OSS tidak dapat diakses, atur X-DashScope-OssResourceResolve ke enable di header permintaan (tidak direkomendasikan). SDK tidak mendukung konfigurasi header permintaan.
vocabularyIdStringTidakID daftar kata kunci panas yang telah dikompilasi sebelumnya.Hasilkan ID ini terlebih dahulu dengan memanggil API pembuatan daftar kata kunci panas. Masukkan ID ini selama pengenalan untuk menggunakan kata kunci dalam daftar tersebut.Cocok untuk skenario di mana kosakata diketahui dan relatif stabil, serta Anda perlu menggunakan kembali daftar kata yang sama di berbagai permintaan.Untuk detail penggunaan, lihat Kata kunci panas yang telah dikompilasi.
vocabularyMap<String, Integer>TidakKata kunci panas instan.Diteruskan sebagai pasangan kunci-nilai, di mana kunci adalah teks kata kunci panas (string) dan nilai adalah bobot kata kunci panas (integer). Tidak perlu membuat daftar kata kunci panas terlebih dahulu. Bobot berkisar antara [1, 5] atau diatur ke 50: nilai dalam [1, 5] membuat model lebih cenderung mengeluarkan kata tersebut seiring peningkatan nilainya; nilai 50 menunjukkan kata kunci super panas, yang sangat meningkatkan recall, tetapi jumlah kata kunci super panas tidak boleh melebihi 50.Cocok untuk optimasi kata kunci panas tingkat sesi yang bersifat sementara.Saat dikonfigurasi bersama kata kunci panas yang telah dikompilasi, hanya kata kunci panas instan yang berlaku. Untuk detail penggunaan, lihat Kata kunci panas instan.
Hanya qwen-audio-3.0-asr-flash-filetrans yang mendukung kata kunci panas inline.
Atur vocabulary melalui metode parameter atau metode parameters dari instans TranscriptionParam:
Map<String, Integer> vocab = new HashMap<>();
vocab.put("John Smith", 5);
vocab.put("Jane Doe", 5);

TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .parameter("vocabulary", vocab)
  .build();
channelIdList<Integer>TidakIndeks track audio yang akan dikenali dalam file audio multi-track. Indeks dimulai dari 0. Misalnya, [0] mengenali track pertama, dan [0, 1] mengenali track pertama dan kedua secara bersamaan. Jika Anda mengabaikan parameter ini, hanya track pertama yang diproses.
Setiap track yang ditentukan dikenai biaya secara terpisah. Misalnya, meminta [0, 1] untuk satu file dikenai dua biaya terpisah.
Nilai default: [0].
specialWordFilterStringTidakKata sensitif yang akan diproses selama pengenalan ucapan. Anda dapat mengatur metode penanganan berbeda untuk setiap kata sensitif. Untuk detailnya, lihat Penyaringan kata sensitif.
diarizationEnabledBooleanTidakApakah akan mengaktifkan diarization pembicara. Secara default dinonaktifkan.Hanya berlaku untuk audio mono. Audio multi-channel tidak mendukung diarization pembicara.Saat diaktifkan, hasil pengenalan mencakup bidang speaker_id yang membedakan pembicara berbeda.
Saat diarization pembicara diaktifkan, pastikan durasi audio tidak melebihi 2 jam. Jika tidak, pengenalan mungkin gagal atau timeout.
Nilai default: false.Untuk contoh speaker_id, lihat Deskripsi hasil pengenalan.
speakerCountIntegerTidak
Hanya berlaku saat diarization pembicara diaktifkan (diarization_enabled diatur ke true).
Nilai referensi untuk jumlah pembicara. Rentang valid adalah bilangan bulat dari 2 hingga 100 (inklusif).Secara default, jumlah pembicara dideteksi secara otomatis. Jika Anda mengatur nilai ini, nilai tersebut hanya membimbing algoritma untuk menghasilkan jumlah yang ditentukan jika memungkinkan dan tidak menjamin jumlah pasti tersebut.Tidak ada nilai default.
language_hintsString[]TidakKode bahasa yang akan dikenali. Jika Anda tidak dapat menentukan bahasa sebelumnya, biarkan tidak diatur dan model akan mendeteksi bahasa secara otomatis.Untuk model Qwen-Audio-3.0-ASR-Flash-Filetrans, Anda dapat mengatur hingga 4 nilai; nilai apa pun yang melebihi 4 nilai pertama akan diabaikan. Untuk model Fun-ASR, Anda hanya dapat mengatur 1 nilai; jika Anda mengatur beberapa nilai, hanya nilai pertama yang berlaku.
  • qwen-audio-3.0-asr-flash-filetrans, fun-asr, fun-asr-2025-11-07, fun-asr-mtl, fun-asr-mtl-2025-08-25:
    • zh: Chinese
    • en: English
    • ja: Japanese
    • ko: Korean
    • vi: Vietnamese
    • th: Thai
    • id: Indonesian
    • ms: Malay
    • tl: Filipino
    • hi: Hindi
    • ar: Arabic
    • fr: French
    • de: German
    • es: Spanish
    • pt: Portuguese
    • ru: Russian
    • it: Italian
    • nl: Dutch
    • sv: Swedish
    • da: Danish
    • fi: Finnish
    • no: Norwegian
    • el: Greek
    • pl: Polish
    • cs: Czech
    • hu: Hungarian
    • ro: Romanian
    • bg: Bulgarian
    • hr: Croatian
    • sk: Slovak
  • fun-asr-2025-08-25:
    • zh: Chinese
    • en: English
Atur language_hints melalui metode parameter atau metode parameters dari instans TranscriptionParam:
TranscriptionParam param = TranscriptionParam.builder()
  .model("qwen-audio-3.0-asr-flash-filetrans")
  .parameter("language_hints", new String[]{"zh"})
  .build();
apiKeyStringTidakKunci API Anda. Jika Anda telah mengonfigurasi Kunci API sebagai Variabel lingkungan, Anda tidak perlu mengaturnya di kode Anda. Jika tidak, Anda harus mengaturnya di kode Anda.

Tanggapan

Hasil tugas (TranscriptionResult)

TranscriptionResult mengenkapsulasi hasil tugas saat ini.
Antarmuka/MetodeParameterNilai kembalianDeskripsi
public String getRequestId()
Tidak adarequestIdMendapatkan requestId.
public String getTaskId()
Tidak adataskIdMendapatkan taskId.
public TaskStatus getTaskStatus()
Tidak adaTaskStatus, status tugasMendapatkan status tugas.TaskStatus adalah enum. Anda hanya perlu fokus pada empat status berikut: PENDING, RUNNING, SUCCEEDED, dan FAILED.
Saat tugas berisi beberapa subtugas, status tugas keseluruhan ditandai sebagai SUCCEEDED selama setidaknya satu subtugas berhasil. Gunakan bidang subtask_status untuk memeriksa hasil setiap subtugas individual.
public List<TranscriptionTaskResult> getResults()
Tidak adaHasil subtugas (TranscriptionTaskResult)Mendapatkan Hasil subtugas (TranscriptionTaskResult).Setiap tugas mengenali satu atau beberapa file audio. File audio berbeda diproses dalam subtugas terpisah, sehingga setiap tugas berkorespondensi dengan satu atau beberapa subtugas.
public JsonObject getOutput()
Tidak adaHasil tugas, dalam format JSONMendapatkan hasil tugas.Hasilnya berupa data dalam format JSON. Jika Anda ingin mendapatkan hasil tugas melalui antarmuka getOutput, urai sendiri setelah Anda mendapatkan hasilnya.
Contoh sukses
{
    "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 saat terjadi kesalahan. Anda dapat menggunakannya, bersama dengan Kode kesalahan, untuk memecahkan masalah.
{
          "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": "The audio file cannot be downloaded.",
                  "subtask_status": "FAILED"
              }
          ],
          "task_metrics": {
              "TOTAL": 1,
              "SUCCEEDED": 0,
              "FAILED": 1
          }
      }

Hasil subtugas (TranscriptionTaskResult)

TranscriptionTaskResult mengenkapsulasi hasil subtugas. Subtugas mengenali satu file audio.
Antarmuka/MetodeParameterNilai kembalianDeskripsi
public String getFileUrl()
Tidak adaURL file audio yang dikenaliMendapatkan URL file audio yang dikenali.
public String getTranscriptionUrl()
Tidak adaURL hasil pengenalanMendapatkan URL hasil pengenalan. URL ini berlaku selama 24 jam. Setelah masa berlaku habis, Anda tidak dapat lagi mengkueri tugas atau mengunduh hasil melalui URL yang dikembalikan dalam kueri sebelumnya.Hasil pengenalan disimpan sebagai file JSON. Anda dapat mengunduh file tersebut melalui URL atau membaca isinya langsung melalui permintaan HTTP.Untuk makna setiap bidang dalam data JSON, lihat Deskripsi hasil pengenalan.
public TaskStatus getSubTaskStatus()
Tidak adaTaskStatus, status subtugasMendapatkan status subtugas.TaskStatus adalah enum. Anda hanya perlu fokus pada empat status berikut: PENDING, RUNNING, SUCCEEDED, dan FAILED.
public String getMessage()
Tidak adaInformasi penting yang dihasilkan selama eksekusi tugas, yang mungkin kosongMendapatkan informasi penting yang dihasilkan selama eksekusi tugas.Saat tugas gagal, periksa konten ini untuk menganalisis penyebabnya.

Deskripsi hasil pengenalan

Hasil pengenalan disimpan sebagai file JSON.
{
    "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 Alibaba Speech Lab.",
            "sentences":[
                {
                    "begin_time":100,
                    "end_time":3820,
                    "text":"Hello world, this is Alibaba Speech Lab.",
                    "sentence_id":1,
                    "speaker_id":0, //Bidang ini ditampilkan hanya saat diarization pembicara otomatis diaktifkan
                    "words":[
                        {
                            "begin_time":100,
                            "end_time":596,
                            "text":"Hello ",
                            "punctuation":""
                        },
                        {
                            "begin_time":596,
                            "end_time":844,
                            "text":"world",
                            "punctuation":", "
                        }
                        // Konten lainnya dihilangkan di sini
                    ]
                }
            ]
        }
    ]
}
Parameter berikut patut diperhatikan:

Parameter

Tipe

Deskripsi

audio_format

string

Format audio file sumber.

channels

array[integer]

Indeks track audio dalam file sumber. Untuk audio satu track, [0] dikembalikan; untuk audio dua track, [0, 1] dikembalikan; dan seterusnya.

original_sampling_rate

integer

Laju sampel (Hz) audio dalam file sumber.

original_duration_in_milliseconds

integer

Durasi audio asli (ms) dalam file sumber.

channel_id

integer

Indeks track hasil transkripsi, dimulai dari 0.

content_duration

integer

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

Layanan model pengenalan ucapan hanya mentranskripsi konten dalam track yang diidentifikasi sebagai ucapan, dan mengukur serta menagih berdasarkan durasi tersebut. Konten non-ucapan tidak diukur atau ditagih. Biasanya, durasi konten ucapan lebih pendek daripada durasi audio asli. Karena keberadaan konten ucapan ditentukan oleh model AI, hasilnya mungkin sedikit berbeda dari situasi aktual.

transcript

string

Hasil transkripsi tingkat paragraf.

sentences

array

Hasil transkripsi tingkat kalimat.

words

array

Hasil transkripsi tingkat kata.

begin_time

integer

Timestamp mulai (ms).

end_time

integer

Timestamp akhir (ms).

text

string

Hasil transkripsi.

speaker_id

integer

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

Bidang ini muncul dalam hasil pengenalan hanya saat diarization 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.
// Bangun parameter permintaan transkripsi
TranscriptionParam param =
        TranscriptionParam.builder()
                // Jika Anda belum mengatur Kunci API sebagai variabel lingkungan, ganti apiKey dengan Kunci API Anda sendiri
                //.apiKey("apikey")
                .model("qwen-audio-3.0-asr-flash-filetrans")
                .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 kembalianDeskripsi
public static TranscriptionQueryParam FromTranscriptionParam(TranscriptionParam param, String taskId)
  • param: instans TranscriptionParam
  • taskId: ID tugas
instans TranscriptionQueryParamMembuat instans TranscriptionQueryParam.

Kelas inti (Transcription)

Impor Transcription dengan "import com.alibaba.dashscope.audio.asr.transcription.*;". Antarmuka utamanya adalah sebagai berikut:
Antarmuka/metodeParameterNilai kembalianDeskripsi
public TranscriptionResult asyncCall(TranscriptionParam param)
param: parameter pengenalan ucapan, instans TranscriptionParamHasil tugas (TranscriptionResult)Mengirimkan tugas pengenalan ucapan secara asinkron.
public TranscriptionResult wait(TranscriptionQueryParam queryParam)
queryParam: instans TranscriptionQueryParamHasil tugas (TranscriptionResult)Memblokir thread saat ini hingga tugas asinkron berakhir (status tugas adalah SUCCEEDED atau FAILED).
public TranscriptionResult fetch(TranscriptionQueryParam queryParam)
queryParam: instans TranscriptionQueryParamHasil tugas (TranscriptionResult)Mengkueri hasil tugas saat ini secara asinkron.

Kode kesalahan

Jika Anda mengalami kesalahan, lihat Kode kesalahan untuk memecahkan masalah. Saat tugas berisi beberapa subtugas, status tugas keseluruhan ditandai sebagai SUCCEEDED selama setidaknya satu subtugas berhasil. Periksa bidang subtask_status untuk menentukan hasil setiap subtugas. Contoh tanggapan 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": "The audio file cannot be downloaded.",
            "subtask_status": "FAILED"
        }
    ],
    "task_metrics": {
        "TOTAL": 1,
        "SUCCEEDED": 0,
        "FAILED": 1
    }
}

FAQ

Fitur

T: Apakah audio berkode Base64 didukung?

Audio berkode Base64 tidak didukung. Hanya audio di URL yang dapat diakses publik yang dapat dikenali. Aliran biner dan file lokal tidak dapat dikenali secara langsung.

T: Bagaimana cara membuat file audio tersedia di URL yang dapat diakses publik?

Langkah-langkah umum adalah sebagai berikut. Ini adalah salah satu pendekatan; proses sebenarnya bervariasi tergantung produk penyimpanan. Kami merekomendasikan Anda mengunggah audio ke Alibaba Cloud OSS:
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, dan 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.
  • Jaringan pengiriman konten (CDN):
    • Host file audio di CDN dan akses melalui URL yang disediakan CDN.
    • Keuntungan: mempercepat pengiriman file dan cocok untuk skenario konkurensi tinggi.
Unggah audio sesuai metode penyimpanan atau hosting yang Anda pilih. Misalnya:
  • Layanan penyimpanan objek:
    • Login ke konsol penyedia cloud dan buat bucket.
    • Unggah file audio, dan atur izinnya ke baca publik atau hasilkan tautan akses sementara.
  • Server web:
    • Tempatkan file audio di direktori yang ditentukan di server (seperti /var/www/html/audio/).
    • Pastikan file dapat diakses melalui HTTP/HTTPS.
Misalnya:
  • Layanan penyimpanan objek:
    • Setelah file diunggah, sistem secara otomatis menghasilkan URL akses publik (biasanya dalam format https://<bucket-name>.<region>.aliyuncs.com/<file-name>).
    • Untuk nama domain yang lebih ramah, ikat domain kustom dan aktifkan HTTPS.
  • Server web:
    • URL akses biasanya alamat server ditambah jalur file (seperti https://your-domain.com/audio/file.mp3).
  • CDN:
    • Setelah Anda mengonfigurasi akselerasi CDN, gunakan URL yang disediakan CDN (seperti https://cdn.your-domain.com/audio/file.mp3).
Pastikan URL yang dihasilkan dapat diakses melalui jaringan publik. Misalnya:
  • Buka URL di browser dan periksa apakah file audio diputar.
  • Gunakan tool (seperti curl atau Postman) untuk memverifikasi bahwa 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 masa berlaku habis. Jangan gunakan di lingkungan produksi.
  • API untuk mendapatkan kredensial unggah dibatasi hingga 100 QPS dan tidak mendukung penskalaan. 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 tugas dikirim, tugas tersebut masuk ke status antrian (PENDING). Waktu antrian bergantung pada panjang antrian dan durasi audio, sehingga tidak dapat ditentukan secara pasti, tetapi biasanya dalam hitungan beberapa menit. Secara umum, semakin panjang audio, semakin lama waktunya.

Pemecahan masalah

Jika kode Anda mengembalikan kesalahan, pecahkan masalah berdasarkan informasi di Kode kesalahan.

T: Polling tidak pernah mengembalikan hasil?

Hal ini mungkin disebabkan oleh Pembatasan kecepatan. Tunggu sebentar dan coba lagi.

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

Periksa apakah format audio dan laju sampel sudah benar dan memenuhi batasan parameter. Gunakan tool ffprobe untuk mendapatkan container audio, kodek, laju sampel, channel, dan detail lainnya:
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx
Pembuatan Gambar
  • FAQ
Video Generation
Model Dunia
Audio
  • Pembuatan audio
Realtime API
Penyematan Teks
TokenPlan
Model production