Skip to main content
Pengenalan Ucapan Non-Real-Time (Paraformer)

SDK Java untuk pengenalan ucapan non-real-time Paraformer

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

Alibaba 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.
Dokumen 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.
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 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.
    • 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).
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.
    • 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).
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.
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
modelString
YaMenentukan nama model Paraformer untuk transkripsi file audio/video. Lihat Model yang didukung.
fileUrlsList<String>
YaDaftar 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://.
vocabularyIdString
TidakID 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.
channelIdList<Integer>[0]TidakMenentukan 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.
Setiap track yang ditentukan ditagih secara independen. Misalnya, meminta [0, 1] untuk satu file dikenai dua biaya terpisah.
disfluencyRemovalEnabledBooleanfalseTidakMenyaring kata pengisi. Dinonaktifkan secara bawaan.
timestampAlignmentEnabledBooleanfalseTidakApakah akan mengaktifkan fitur penyelarasan timestamp. Dinonaktifkan secara bawaan.
specialWordFilterString
TidakMenentukan 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_hintsString[]["zh", "en"]TidakMenentukan 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
language_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();
diarizationEnabledBooleanfalseTidakDiarisasi 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.
Jika 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.
speakerCountInteger
TidakNilai 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.
apiKeyString
TidakKunci 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 adarequestIdMendapatkan requestId.
public String getTaskId()
Tidak adataskIdMendapatkan taskId.
public TaskStatus getTaskStatus()
Tidak adaTaskStatus, status tugasMendapatkan status tugas.TaskStatus adalah kelas enum. Anda hanya perlu fokus pada empat status berikut: PENDING, RUNNING, SUCCEEDED, dan FAILED.
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.
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 berbeda, sehingga setiap tugas berkorespondensi dengan satu atau beberapa subtugas.
public JsonObject getOutput()
Tidak adaHasil tugas dalam format JSONMendapatkan hasil tugas.Hasilnya dalam format JSON. Jika Anda menggunakan antarmuka getOutput untuk mendapatkan hasil tugas, Anda perlu menguraikannya sendiri.
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 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 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 adaTaskStatus, status subtugasMendapatkan status subtugas.TaskStatus adalah kelas enum. Anda hanya perlu fokus pada empat status berikut: PENDING, RUNNING, SUCCEEDED, dan FAILED.
public String getMessage()
Tidak adaInformasi penting selama eksekusi tugas, yang mungkin kosongMendapatkan 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.
{
    "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.
// 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 TranscriptionQueryParamMembuat 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 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 selesai (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 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):
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.
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.
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).
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.
Pembuatan Gambar
  • FAQ
Video Generation
Model Dunia
Audio
Realtime API
Penyematan Teks
TokenPlan
Model production