全部产品
Search
文档中心

Alibaba Cloud Model Studio:SDK Python untuk Pengenalan Ucapan Real-time Paraformer

更新时间:Oct 15, 2025

Topik ini menjelaskan parameter dan antarmuka dari SDK Python Pengenalan Ucapan Real-time Paraformer.

Penting

Dokumen ini hanya berlaku untuk wilayah Cina (Beijing). Untuk menggunakan model-model tersebut, Anda harus menggunakan API key dari wilayah Cina (Beijing).

Panduan Pengguna: Untuk deskripsi model dan panduan pemilihan model, lihat Pengenalan Ucapan Real-time.

Prasyarat

  • Anda telah mengaktifkan layanan dan mendapatkan API key. Untuk mencegah risiko keamanan, atur API key sebagai variabel lingkungan alih-alih melakukan hard-coding di dalam kode Anda.

    Catatan

    Untuk memberikan izin akses sementara kepada aplikasi atau pengguna pihak ketiga, atau ingin secara ketat mengontrol operasi berisiko tinggi seperti mengakses atau menghapus data sensitif, kami merekomendasikan agar Anda menggunakan token otentikasi sementara.

    Dibandingkan dengan API key jangka panjang, token otentikasi sementara lebih aman karena bersifat sementara (60 detik). Mereka cocok untuk skenario panggilan sementara dan dapat secara efektif mengurangi risiko kebocoran API key.

    Untuk menggunakan token sementara, ganti API key yang digunakan untuk otentikasi dalam kode Anda dengan token otentikasi sementara yang telah Anda ambil.

  • Instal versi terbaru dari DashScope SDK.

Daftar Model

paraformer-realtime-v2

paraformer-realtime-8k-v2

Skenario

Skenario seperti siaran langsung dan rapat

Skenario pengenalan audio 8 kHz, seperti layanan pelanggan telepon dan pesan suara

Laju sampel

Semua

8 kHz

Bahasa

Cina (termasuk Mandarin dan berbagai dialek), Inggris, Jepang, Korea, Jerman, Prancis, dan Rusia

Dialek Cina yang didukung: Shanghainese, Wu, Minnan, Timur Laut, Gansu, Guizhou, Henan, Hubei, Hunan, Jiangxi, Ningxia, Shanxi, Shaanxi, Shandong, Sichuan, Tianjin, Yunnan, dan Kanton

Cina

Prediksi tanda baca

✅ Didukung secara default. Tidak diperlukan konfigurasi.

✅ Didukung secara default. Tidak diperlukan konfigurasi.

Inverse Text Normalization (ITN)

✅ Didukung secara default. Tidak diperlukan konfigurasi.

✅ Didukung secara default. Tidak diperlukan konfigurasi.

Kosakata kustom

✅ Lihat Kata panas kustom

✅ Lihat Kata panas kustom

Tentukan bahasa pengenalan

✅ Tentukan bahasa menggunakan parameter language_hints.

Pengenalan emosi

✅ (Klik untuk melihat penggunaan)

Pengenalan emosi memiliki batasan berikut:

  • Hanya tersedia untuk model paraformer-realtime-8k-v2.

  • Anda harus menonaktifkan tanda baca semantik (dikontrol oleh parameter permintaan semantic_punctuation_enabled). Secara default, tanda baca semantik dinonaktifkan.

  • Hasil pengenalan emosi hanya ditampilkan saat metode is_sentence_end dari objek RecognitionResult mengembalikan nilai True.

Untuk mendapatkan hasil deteksi emosi, ambil emosi dan tingkat kepercayaan emosi dari kalimat saat ini dari bidang emo_tag dan emo_confidence dari informasi satu kalimat (Sentence), masing-masing.

Memulai

Kelas Recognition menyediakan metode untuk panggilan sinkron dan streaming. Pilih metode yang sesuai berdasarkan kebutuhan Anda:

  • Panggilan sinkron: Mengenali file lokal dan mengembalikan hasil lengkap sekaligus. Cocok untuk memproses audio yang sudah direkam sebelumnya.

  • Panggilan streaming: Mengenali aliran audio dan mengeluarkan hasil secara real-time. Aliran audio dapat berasal dari perangkat eksternal, seperti mikrofon, atau dibaca dari file lokal. Cocok untuk skenario yang memerlukan umpan balik segera.

Panggilan Sinkron

Metode ini mengirimkan tugas pengenalan ucap ke teks real-time untuk file lokal. Proses ini diblokir hingga hasil transkripsi lengkap dikembalikan.

Inisialisasi kelas Recognition, atur parameter permintaan, dan panggil metode call untuk melakukan pengenalan dan mendapatkan RecognitionResult.

Klik untuk melihat contoh lengkap

File audio yang digunakan dalam contoh adalah: asr_example.wav.

from http import HTTPStatus
from dashscope.audio.asr import Recognition

# Jika Anda belum mengonfigurasi API key di variabel lingkungan, hapus komentar baris kode berikut dan ganti apiKey dengan API key Anda.
# import dashscope
# dashscope.api_key = "apiKey"

recognition = Recognition(model='paraformer-realtime-v2',
                          format='wav',
                          sample_rate=16000,
                          # Parameter "language_hints" hanya didukung oleh model paraformer-realtime-v2.
                          language_hints=['zh', 'en'],
                          callback=None)
result = recognition.call('asr_example.wav')
if result.status_code == HTTPStatus.OK:
    print('Hasil Pengenalan:')
    print(result.get_sentence())
else:
    print('Error: ', result.message)
    
print(
    '[Metric] requestId: {}, delay paket pertama ms: {}, delay paket terakhir ms: {}'
    .format(
        recognition.get_last_request_id(),
        recognition.get_first_package_delay(),
        recognition.get_last_package_delay(),
    ))

Panggilan Streaming

Metode ini mengirimkan tugas pengenalan ucap ke teks real-time dan mengembalikan hasil pengenalan real-time melalui antarmuka callback.

  1. Mulai pengenalan ucap streaming

    Inisialisasi kelas Recognition, atur parameter permintaan dan antarmuka callback (RecognitionCallback), lalu panggil metode start.

  2. Streaming audio

    Panggil berulang kali metode send_audio_frame dari kelas `Recognition` untuk mengirim aliran audio biner dari file lokal atau perangkat (seperti mikrofon) ke server dalam segmen-segmen.

    Saat data audio dikirim, server menggunakan metode on_event dari Antarmuka Callback RecognitionCallback untuk mengembalikan hasil pengenalan kepada klien secara real-time.

    Kami merekomendasikan durasi setiap segmen audio yang dikirim sekitar 100 milidetik, dengan ukuran data antara 1 KB hingga 16 KB.

  3. Akhir pemrosesan

    Panggil metode stop dari kelas Recognition untuk menghentikan pengenalan ucapan.

    Metode ini memblokir thread saat ini hingga callback on_complete atau on_error dari antarmuka callback (RecognitionCallback) dipicu.

Klik untuk melihat contoh lengkap

Mengenali ucapan dari mikrofon

import os
import signal  # untuk penanganan acara keyboard (tekan "Ctrl+C" untuk menghentikan perekaman)
import sys

import dashscope
import pyaudio
from dashscope.audio.asr import *

mic = None
stream = None

# Atur parameter rekaman
sample_rate = 16000  # laju pengambilan sampel (Hz)
channels = 1  # saluran mono
dtype = 'int16'  # tipe data
format_pcm = 'pcm'  # format data audio
block_size = 3200  # jumlah frame per buffer


def init_dashscope_api_key():
    """
        Atur DashScope API-key Anda. Informasi lebih lanjut:
        https://github.com/aliyun/alibabacloud-bailian-speech-demo/blob/master/PREREQUISITES.md
    """

    if 'DASHSCOPE_API_KEY' in os.environ:
        dashscope.api_key = os.environ[
            'DASHSCOPE_API_KEY']  # muat API-key dari variabel lingkungan DASHSCOPE_API_KEY
    else:
        dashscope.api_key = '<your-dashscope-api-key>'  # atur API-key secara manual


# Callback pengenalan ucapan real-time
class Callback(RecognitionCallback):
    def on_open(self) -> None:
        global mic
        global stream
        print('RecognitionCallback open.')
        mic = pyaudio.PyAudio()
        stream = mic.open(format=pyaudio.paInt16,
                          channels=1,
                          rate=16000,
                          input=True)

    def on_close(self) -> None:
        global mic
        global stream
        print('RecognitionCallback close.')
        stream.stop_stream()
        stream.close()
        mic.terminate()
        stream = None
        mic = None

    def on_complete(self) -> None:
        print('RecognitionCallback completed.')  # pengenalan selesai

    def on_error(self, message) -> None:
        print('RecognitionCallback task_id: ', message.request_id)
        print('RecognitionCallback error: ', message.message)
        # Hentikan dan tutup aliran audio jika sedang berjalan
        if 'stream' in globals() and stream.active:
            stream.stop()
            stream.close()
        # Keluar paksa dari program
        sys.exit(1)

    def on_event(self, result: RecognitionResult) -> None:
        sentence = result.get_sentence()
        if 'text' in sentence:
            print('RecognitionCallback text: ', sentence['text'])
            if RecognitionResult.is_sentence_end(sentence):
                print(
                    'RecognitionCallback akhir kalimat, request_id:%s, usage:%s'
                    % (result.get_request_id(), result.get_usage(sentence)))


def signal_handler(sig, frame):
    print('Ctrl+C ditekan, hentikan pengenalan ...')
    # Hentikan pengenalan
    recognition.stop()
    print('Pengenalan dihentikan.')
    print(
        '[Metric] requestId: {}, delay paket pertama ms: {}, delay paket terakhir ms: {}'
        .format(
            recognition.get_last_request_id(),
            recognition.get_first_package_delay(),
            recognition.get_last_package_delay(),
        ))
    # Keluar paksa dari program
    sys.exit(0)


# fungsi utama
if __name__ == '__main__':
    init_dashscope_api_key()
    print('Menginisialisasi ...')

    # Buat callback pengenalan
    callback = Callback()

    # Panggil layanan pengenalan secara mode async, Anda dapat menyesuaikan parameter pengenalan, seperti model, format,
    # sample_rate
    recognition = Recognition(
        model='paraformer-realtime-v2',
        format=format_pcm,
        # 'pcm', 'wav', 'opus', 'speex', 'aac', atau 'amr'. Anda dapat memeriksa format yang didukung di dokumen.
        sample_rate=sample_rate,
        # 8000 atau 16000 didukung.
        semantic_punctuation_enabled=False,
        callback=callback)

    # Mulai pengenalan
    recognition.start()

    signal.signal(signal.SIGINT, signal_handler)
    print("Tekan 'Ctrl+C' untuk menghentikan perekaman dan pengenalan...")
    # Buat pendengar keyboard hingga "Ctrl+C" ditekan

    while True:
        if stream:
            data = stream.read(3200, exception_on_overflow=False)
            recognition.send_audio_frame(data)
        else:
            break

    recognition.stop()

Mengenali file audio lokal

File audio yang digunakan dalam contoh adalah: asr_example.wav.

import os
import time
from dashscope.audio.asr import *

# Jika Anda belum mengonfigurasi API key di variabel lingkungan, hapus komentar baris kode berikut dan ganti apiKey dengan API key Anda.
# import dashscope
# dashscope.api_key = "apiKey"

from datetime import datetime

def get_timestamp():
    now = datetime.now()
    formatted_timestamp = now.strftime("[%Y-%m-%d %H:%M:%S.%f]")
    return formatted_timestamp

class Callback(RecognitionCallback):
    def on_complete(self) -> None:
        print(get_timestamp() + ' Pengenalan selesai')  # pengenalan selesai

    def on_error(self, result: RecognitionResult) -> None:
        print('Tugas pengenalan: ', result.request_id)
        print('Error pengenalan: ', result.message)
        exit(0)

    def on_event(self, result: RecognitionResult) -> None:
        sentence = result.get_sentence()
        if 'text' in sentence:
            print(get_timestamp() + ' RecognitionCallback text: ', sentence['text'])
            if RecognitionResult.is_sentence_end(sentence):
                print(get_timestamp() + 
                    'RecognitionCallback akhir kalimat, request_id:%s, usage:%s'
                    % (result.get_request_id(), result.get_usage(sentence)))


callback = Callback()

recognition = Recognition(model='paraformer-realtime-v2',
                          format='wav',
                          sample_rate=16000,
                          # Parameter "language_hints" hanya didukung oleh model paraformer-realtime-v2.
                          language_hints=['zh', 'en'],
                          callback=callback)

recognition.start()

try:
    audio_data: bytes = None
    f = open("asr_example.wav", 'rb')
    if os.path.getsize("asr_example.wav"):
        while True:
            audio_data = f.read(3200)
            if not audio_data:
                break
            else:
                recognition.send_audio_frame(audio_data)
            time.sleep(0.1)
    else:
        raise Exception(
            'File yang disediakan kosong (berukuran nol byte)')
    f.close()
except Exception as e:
    raise e

recognition.stop()

print(
    '[Metric] requestId: {}, delay paket pertama ms: {}, delay paket terakhir ms: {}'
    .format(
        recognition.get_last_request_id(),
        recognition.get_first_package_delay(),
        recognition.get_last_package_delay(),
    ))

Panggilan konkuren

Dalam Python, karena adanya Global Interpreter Lock, hanya satu thread yang dapat mengeksekusi kode Python pada satu waktu, meskipun beberapa library berperforma tinggi mungkin menghapus batasan ini. Untuk lebih memanfaatkan sumber daya komputasi komputer multi-core, kami merekomendasikan agar Anda menggunakan multiprocessing atau concurrent.futures.ProcessPoolExecutor. Multithreading dapat secara signifikan meningkatkan latensi pemanggilan SDK di bawah konkurensi tinggi.

Parameter Permintaan

Parameter permintaan diatur di konstruktor (__init__) dari kelas Recognition.

Parameter

Tipe

Default

Wajib

Deskripsi

model

str

-

Ya

Model yang digunakan untuk pengenalan ucapan real-time. Untuk informasi lebih lanjut, lihat Daftar Model.

sample_rate

int

-

Ya

Atur laju pengambilan sampel audio (dalam Hz) untuk pengenalan.

Bervariasi berdasarkan model:

  • paraformer-realtime-v2 mendukung semua laju sampel.

  • paraformer-realtime-8k-v2 hanya mendukung laju sampel 8000 Hz.

format

str

-

Ya

Format audio yang akan dikenali.

Format audio yang didukung: pcm, wav, mp3, opus, speex, aac, dan amr.

Penting

opus/speex: Harus dibungkus dalam Ogg.

wav: Harus dikodekan PCM.

amr: Hanya AMR-NB yang didukung.

vocabulary_id

str

-

Tidak

ID kosakata kata panas. Parameter ini berlaku hanya ketika diatur. Gunakan bidang ini untuk mengatur ID kata panas untuk model v2 dan yang lebih baru.

Informasi kata panas untuk ID kata panas ini akan diterapkan pada permintaan pengenalan ucapan. Untuk informasi lebih lanjut, lihat Kustomisasi kata panas.

disfluency_removal_enabled

bool

False

Tidak

Menentukan apakah akan menyaring kata-kata tidak lancar:

  • true: Menyaring kata-kata tidak lancar.

  • false (default): Tidak menyaring kata-kata tidak lancar.

language_hints

list[str]

["zh", "en"]

Tidak

Kode bahasa dari bahasa yang akan dikenali. Jika Anda tidak dapat menentukan bahasa terlebih dahulu, Anda dapat membiarkan parameter ini tidak diatur. Model akan mendeteksi bahasa secara otomatis.

Kode bahasa yang saat ini didukung:

  • zh: Cina

  • en: Inggris

  • ja: Jepang

  • yue: Kanton

  • ko: Korea

  • de: Jerman

  • fr: Prancis

  • ru: Rusia

Parameter ini hanya berlaku untuk model multibahasa. Untuk informasi lebih lanjut, lihat Daftar Model.

semantic_punctuation_enabled

bool

False

Tidak

Menentukan apakah akan mengaktifkan segmentasi kalimat semantik. Fitur ini dinonaktifkan secara default.

  • true: Mengaktifkan segmentasi kalimat semantik dan menonaktifkan segmentasi kalimat Voice Activity Detection (VAD).

  • false (default): Mengaktifkan segmentasi kalimat VAD dan menonaktifkan segmentasi kalimat semantik.

Segmentasi kalimat semantik memberikan akurasi lebih tinggi dan cocok untuk skenario transkripsi rapat. Segmentasi kalimat VAD memiliki latensi lebih rendah dan cocok untuk skenario interaktif.

Dengan menyesuaikan parameter semantic_punctuation_enabled, Anda dapat beralih metode segmentasi kalimat secara fleksibel untuk menyesuaikan skenario yang berbeda.

Parameter ini hanya berlaku untuk model v2 dan yang lebih baru.

max_sentence_silence

int

800

Tidak

Ambang durasi keheningan untuk segmentasi kalimat VAD, dalam ms.

Ketika durasi keheningan setelah segmen ucapan melebihi ambang ini, sistem menentukan bahwa kalimat telah berakhir.

Rentang parameter ini adalah dari 200 ms hingga 6000 ms. Nilai defaultnya adalah 800 ms.

Parameter ini hanya berlaku ketika parameter semantic_punctuation_enabled adalah `false` (segmentasi VAD) dan modelnya adalah v2 atau yang lebih baru.

multi_threshold_mode_enabled

bool

False

Tidak

Ketika saklar ini dihidupkan (`true`), ini mencegah VAD membagi kalimat yang terlalu panjang. Fitur ini dinonaktifkan secara default.

Parameter ini hanya berlaku ketika parameter semantic_punctuation_enabled adalah `false` (segmentasi VAD) dan modelnya adalah v2 atau yang lebih baru.

punctuation_prediction_enabled

bool

True

Tidak

Menentukan apakah akan menambahkan tanda baca secara otomatis ke hasil pengenalan:

  • true (default)

  • false

Parameter ini hanya berlaku untuk model v2 dan yang lebih baru.

heartbeat

bool

False

Tidak

Ketika Anda perlu mempertahankan koneksi persisten dengan server, Anda dapat menggunakan saklar ini:

  • true: Mempertahankan koneksi dengan server tanpa gangguan, bahkan ketika audio diam terus dikirim.

  • false (default): Koneksi terputus karena timeout setelah 60 detik, bahkan jika audio diam terus dikirim.

    Audio diam mengacu pada konten dalam file audio atau aliran data yang tidak memiliki sinyal suara. Anda dapat menghasilkan audio diam menggunakan berbagai metode, seperti perangkat lunak pengeditan audio seperti Audacity atau Adobe Audition, atau alat baris perintah seperti FFmpeg.

Parameter ini hanya berlaku untuk model v2 dan yang lebih baru.

Saat menggunakan bidang ini, versi SDK harus 1.23.1 atau lebih baru.

inverse_text_normalization_enabled

bool

True

Tidak

Menentukan apakah akan mengaktifkan Inverse Text Normalization (ITN).

Fitur ini diaktifkan secara default (`true`). Saat diaktifkan, angka Cina dikonversi menjadi angka Arab.

Parameter ini hanya berlaku untuk model v2 dan yang lebih baru.

callback

RecognitionCallback

-

Tidak

Antarmuka RecognitionCallback.

Antarmuka Utama

Recognition class

Kelas Recognition diimpor menggunakan `from dashscope.audio.asr import *`.

Metode Anggota

Method Signature

Deskripsi

call

def call(self, file: str, phrase_id: str = None, **kwargs) -> RecognitionResult

Panggilan sinkron yang menggunakan file lokal. Metode ini memblokir thread saat ini hingga seluruh file audio dibaca. File harus memiliki izin baca.

Hasil pengenalan dikembalikan sebagai tipe RecognitionResult.

start

def start(self, phrase_id: str = None, **kwargs)

Memulai pengenalan ucapan.

Ini adalah metode pengenalan real-time berbasis callback streaming yang tidak memblokir thread saat ini. Harus digunakan bersama dengan send_audio_frame dan stop.

send_audio_frame

def send_audio_frame(self, buffer: bytes)

Mendorong aliran audio. Aliran audio yang didorong setiap kali seharusnya tidak terlalu besar atau terlalu kecil. Kami merekomendasikan agar setiap paket audio memiliki durasi sekitar 100 ms dan ukuran antara 1 KB hingga 16 KB.

Anda dapat memperoleh hasil pengenalan melalui metode on_event dari antarmuka callback (RecognitionCallback).

stop

def stop(self)

Menghentikan pengenalan ucapan. Metode ini memblokir hingga layanan telah mengenali semua audio yang diterima dan tugas selesai.

get_last_request_id

def get_last_request_id(self)

Mendapatkan request_id. Ini dapat digunakan setelah konstruktor dipanggil (objek dibuat).

get_first_package_delay

def get_first_package_delay(self)

Mendapatkan delay paket pertama, yaitu latensi dari mengirim paket audio pertama hingga menerima paket hasil pengenalan pertama. Gunakan ini setelah tugas selesai.

get_last_package_delay

def get_last_package_delay(self)

Mendapatkan delay paket terakhir, yaitu waktu yang diperlukan dari mengirim instruksi stop hingga menerima paket hasil pengenalan terakhir. Gunakan ini setelah tugas selesai.

get_response

def get_response(self)

Mendapatkan pesan terakhir. Ini dapat digunakan untuk mendapatkan error tugas gagal.

Antarmuka Callback (RecognitionCallback)

Selama panggilan streaming, server menggunakan callback untuk mengembalikan informasi proses utama dan data ke klien. Anda harus mengimplementasikan metode callback untuk memproses informasi dan data yang dikembalikan.

Klik untuk melihat contoh

class Callback(RecognitionCallback):
    def on_open(self) -> None:
        print('Koneksi berhasil')

    def on_event(self, result: RecognitionResult) -> None:
        # Implementasikan logika untuk menerima hasil pengenalan

    def on_complete(self) -> None:
        print('Tugas selesai')

    def on_error(self, result: RecognitionResult) -> None:
        print('Terjadi pengecualian: ', result)

    def on_close(self) -> None:
        print('Koneksi ditutup')


callback = Callback()

Metode

Parameter

Nilai Kembali

Deskripsi

def on_open(self) -> None

Tidak ada

Tidak ada

Metode ini dipanggil segera setelah koneksi dengan server dibuat.

def on_event(self, result: RecognitionResult) -> None

result: RecognitionResult

Tidak ada

Metode ini dipanggil ketika layanan mengirimkan respons.

def on_complete(self) -> None

Tidak ada

Tidak ada

Metode ini dipanggil setelah semua hasil pengenalan dikembalikan.

def on_error(self, result: RecognitionResult) -> None

result: Hasil Pengenalan

Tidak ada

Metode ini dipanggil ketika terjadi pengecualian.

def on_close(self) -> None

Tidak ada

Tidak ada

Metode ini dipanggil setelah layanan menutup koneksi.

Hasil Respons

Hasil Pengenalan (RecognitionResult)

RecognitionResult mewakili hasil pengenalan baik dari pengenalan real-time tunggal dalam panggilan streaming atau panggilan sinkron.

Metode Anggota

Tanda Tangan Metode

Deskripsi

get_sentence

def get_sentence(self) -> Union[Dict[str, Any], List[Any]]

Mendapatkan kalimat yang saat ini dikenali dan informasi timestamp. Dalam callback, satu kalimat dikembalikan, jadi metode ini mengembalikan tipe Dict[str, Any].

Untuk informasi lebih lanjut, lihat Kalimat.

get_request_id

def get_request_id(self) -> str

Mendapatkan request_id dari permintaan.

is_sentence_end

@staticmethod
def is_sentence_end(sentence: Dict[str, Any]) -> bool

Menentukan apakah kalimat yang diberikan telah berakhir.

Kalimat (Kalimat)

Anggota kelas Kalimat adalah sebagai berikut:

Parameter

Tipe

Deskripsi

begin_time

int

Waktu mulai kalimat, dalam ms.

end_time

int

Waktu akhir kalimat, dalam ms.

text

str

Teks yang dikenali.

words

Daftar Informasi timestamp kata (Word)

Informasi timestamp kata.

emo_tag

str

Emosi dari kalimat saat ini:

  • positive: Emosi positif, seperti bahagia atau puas

  • negative: Emosi negatif, seperti marah atau sedih

  • neutral: Tidak ada emosi yang jelas

Pengenalan emosi memiliki batasan berikut:

  • Hanya tersedia untuk model paraformer-realtime-8k-v2.

  • Anda harus menonaktifkan tanda baca semantik (dikontrol oleh parameter permintaan semantic_punctuation_enabled). Secara default, tanda baca semantik dinonaktifkan.

  • Hasil pengenalan emosi hanya ditampilkan ketika metode is_sentence_end dari objek RecognitionResult mengembalikan nilai True.

emo_confidence

float

Tingkat kepercayaan emosi yang dikenali untuk kalimat saat ini. Nilainya berkisar dari 0.0 hingga 1.0. Nilai yang lebih besar menunjukkan tingkat kepercayaan yang lebih tinggi.

Pengenalan emosi memiliki batasan berikut:

  • Hanya tersedia untuk model paraformer-realtime-8k-v2.

  • Anda harus menonaktifkan tanda baca semantik (dikontrol oleh parameter permintaan semantic_punctuation_enabled). Secara default, tanda baca semantik dinonaktifkan.

  • Hasil pengenalan emosi hanya ditampilkan ketika metode is_sentence_end dari objek RecognitionResult mengembalikan nilai True.

Informasi Timestamp Kata (Word)

Anggota kelas Word adalah sebagai berikut:

Parameter

Tipe

Deskripsi

begin_time

int

Waktu mulai kata, dalam ms.

end_time

int

Waktu akhir kata, dalam ms.

text

str

Kata.

punctuation

str

Tanda baca.

Kode Kesalahan

Jika terjadi kesalahan, lihat Pesan Kesalahan untuk pemecahan masalah.

Jika masalah tidak terselesaikan, Anda dapat bergabung dengan kelompok pengembang untuk melaporkan masalah. Sertakan Request ID untuk membantu kami menyelidiki masalah tersebut.

Contoh Lainnya

Untuk lebih banyak contoh, lihat GitHub.

FAQ

Fitur

T: Bagaimana cara mempertahankan koneksi persisten dengan server selama periode keheningan yang lama?

Atur parameter permintaan heartbeat menjadi `true` dan terus kirimkan audio diam ke server.

Audio diam mengacu pada konten dalam file audio atau aliran data yang tidak memiliki sinyal suara. Anda dapat menghasilkan audio diam menggunakan berbagai metode, seperti perangkat lunak pengeditan audio seperti Audacity atau Adobe Audition, atau alat baris perintah seperti FFmpeg.

T: Bagaimana cara mengonversi format audio ke format yang diperlukan?

Anda dapat menggunakan alat FFmpeg. Untuk informasi lebih lanjut, lihat situs resmi FFmpeg.

# Perintah konversi dasar (template universal)
# -i: Menentukan jalur file input. Contoh: audio.wav
# -c:a: Menentukan penyandi audio. Contoh: aac, libmp3lame, pcm_s16le
# -b:a: Menentukan bit rate (mengontrol kualitas audio). Contoh: 192k, 320k
# -ar: Menentukan laju sampel. Contoh: 44100 (CD), 48000, 16000
# -ac: Menentukan jumlah saluran suara. Contoh: 1 (mono), 2 (stereo)
# -y: Menimpa file yang ada (tidak memerlukan nilai).
ffmpeg -i input_audio.ext -c:a encoder_name -b:a bit_rate -ar sample_rate -ac num_channels output.ext

# Contoh: WAV ke MP3 (memelihara kualitas asli)
ffmpeg -i input.wav -c:a libmp3lame -q:a 0 output.mp3
# Contoh: MP3 ke WAV (format PCM standar 16-bit)
ffmpeg -i input.mp3 -c:a pcm_s16le -ar 44100 -ac 2 output.wav
# Contoh: M4A ke AAC (ekstrak/konversi audio Apple)
ffmpeg -i input.m4a -c:a copy output.aac  # Ekstrak langsung tanpa re-encoding
ffmpeg -i input.m4a -c:a aac -b:a 256k output.aac  # Re-encode untuk meningkatkan kualitas
# Contoh: FLAC lossless ke Opus (kompresi tinggi)
ffmpeg -i input.flac -c:a libopus -b:a 128k -vbr on output.opus

T: Bagaimana cara mengenali file lokal (file rekaman audio)?

Ada dua cara untuk mengenali file lokal:

  • Langsung lewatkan jalur file lokal: Metode ini mengembalikan hasil pengenalan lengkap setelah file diproses sepenuhnya. Tidak cocok untuk skenario yang memerlukan umpan balik segera.

    Untuk informasi lebih lanjut, lihat panggilan sinkron. Lewatkan jalur file ke metode call dari kelas Recognition untuk langsung mengenali file audio.

  • Konversikan file lokal menjadi aliran biner untuk pengenalan: Metode ini mengembalikan hasil pengenalan dalam aliran saat file sedang diproses. Cocok untuk skenario yang memerlukan umpan balik segera.

    Untuk informasi lebih lanjut, lihat Panggilan Streaming. Anda dapat menggunakan metode send_audio_frame dari kelas Recognition untuk mengirim aliran biner ke server untuk pengenalan.

Pemecahan Masalah

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

  1. Periksa apakah format audio (format) dan laju sampel (sampleRate/sample_rate) dalam parameter permintaan diatur dengan benar dan memenuhi batasan parameter. Berikut adalah contoh kesalahan umum:

    • File audio memiliki ekstensi .wav tetapi sebenarnya dalam format MP3, dan parameter format diatur ke `mp3` (pengaturan parameter salah).

    • Laju sampel audio adalah 3600 Hz, tetapi parameter sampleRate/sample_rate diatur ke 48000 (pengaturan parameter salah).

    Anda dapat menggunakan alat ffprobe untuk mendapatkan informasi tentang audio, seperti kontainer, penyandian, laju sampel, dan saluran suara:

    ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx
  2. Saat menggunakan model paraformer-realtime-v2, periksa apakah bahasa yang diatur dalam language_hints sesuai dengan bahasa aktual audio.

    Sebagai contoh, audio dalam bahasa Cina, tetapi language_hints diatur ke en (Inggris).

  3. Jika semua pemeriksaan di atas berhasil, Anda dapat menggunakan kata panas kustom untuk meningkatkan pengenalan kata-kata tertentu.