Topik ini menjelaskan parameter dan metode SDK Python untuk sintesis ucapan CosyVoice.
Panduan Pengguna: Untuk pengenalan model dan rekomendasi pemilihan, lihat Sintesis Ucapan Real-time – CosyVoice/Sambert.
Prasyarat
-
Anda telah mengaktifkan Model Studio dan membuat Kunci API. Untuk mencegah risiko keamanan, ekspor Kunci API sebagai variabel lingkungan alih-alih menyematkannya langsung dalam kode Anda.
CatatanUntuk memberikan izin akses sementara kepada aplikasi atau pengguna pihak ketiga, atau jika Anda ingin mengontrol secara ketat operasi berisiko tinggi seperti mengakses atau menghapus data sensitif, kami menyarankan Anda menggunakan token otentikasi sementara.
Dibandingkan dengan Kunci API jangka panjang, token otentikasi sementara lebih aman karena masa berlakunya singkat (60 detik). Token ini cocok untuk skenario panggilan sementara dan dapat secara efektif mengurangi risiko kebocoran Kunci API.
Untuk menggunakan token sementara, gantilah Kunci API yang digunakan untuk otentikasi dalam kode Anda dengan token otentikasi sementara tersebut.
Model dan harga
Untuk informasi selengkapnya, lihat Sintesis Ucapan Real-time – CosyVoice/Sambert.
Batas teks dan persyaratan format untuk sintesis ucapan
Batas panjang teks
Untuk panggilan non-streaming atau panggilan streaming satu arah, setiap pengiriman teks tidak boleh melebihi 20.000 karakter.
Untuk panggilan streaming dua arah, setiap pengiriman teks tidak boleh melebihi 20.000 karakter, dan total panjang semua pengiriman tidak boleh melebihi 200.000 karakter.
Aturan Perhitungan Karakter
Karakter Tionghoa—termasuk Hanzi sederhana, Hanzi tradisional, Kanji Jepang, dan Hanja Korea—dihitung sebagai 2 karakter. Semua karakter lainnya—termasuk tanda baca, huruf, angka, kana Jepang/Hangul Korea—dihitung sebagai 1 karakter.
Konten tag SSML tidak termasuk dalam perhitungan panjang teks.
Contoh:
"你好"→ 2 (你) + 2 (好) = 4 karakter"中A文123"→ 2 (中) + 1 ('A') + 2 (文) + 1 ('1') + 1 ('2') + 1 ('3') = 8 karakter"Chinese."→ 2 (zhong) + 2 (wen) + 1 (titik) = 5 karakter"中 文。"→ 2 (中) + 1 (spasi) + 2 (文) + 1 (titik) = 6 karakter"<speak>Hello</speak>"→ 2 (ni) + 2 (hao) = 4 karakter
Format Encoding
Gunakan encoding UTF-8.
Dukungan Ekspresi Matematis
Penguraian ekspresi matematis hanya didukung untuk model cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2. Fitur ini mendukung ekspresi matematis umum yang ditemukan di sekolah dasar dan menengah, termasuk namun tidak terbatas pada operasi dasar, aljabar, dan geometri.
Untuk informasi selengkapnya, lihat Formula LaTeX ke ucapan.
Dukungan Speech Synthesis Markup Language (SSML)
Fitur Speech Synthesis Markup Language (SSML) hanya tersedia untuk suara hasil kloning dari model cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2, serta untuk suara sistem yang ditandai sebagai didukung dalam Daftar Suara. Untuk menggunakan fitur ini, penuhi kondisi berikut:
Anda harus menggunakan SDK DashScope versi 1.23.4 atau lebih baru.
Hanya panggilan non-streaming dan panggilan streaming unidireksional—yaitu, metode
calldari kelas SpeechSynthesizer—yang didukung. Panggilan streaming bidireksional—yaitu, metodestreaming_calldari kelas SpeechSynthesizer—tidak didukung.Penggunaannya identik dengan sintesis ucapan standar. Anda dapat mengirimkan teks berformat SSML ke metode
calldari kelas SpeechSynthesizer.
Mulai
Kelas SpeechSynthesizer menyediakan metode inti sintesis ucapan dan mendukung jenis panggilan berikut:
Panggilan non-streaming: Blocking. Kirim seluruh teks sekaligus dan terima respons audio lengkap segera. Cocok untuk sintesis ucapan teks pendek.
Panggilan streaming satu arah: Non-blocking. Kirim seluruh teks sekaligus dan terima data audio—mungkin tersegmentasi—melalui fungsi callback. Cocok untuk sintesis ucapan teks pendek yang memerlukan performa real-time tinggi.
Panggilan streaming dua arah: Non-blocking. Kirim teks dalam beberapa segmen dan terima aliran audio hasil sintesis secara bertahap secara real-time melalui fungsi callback. Cocok untuk sintesis ucapan teks panjang yang memerlukan performa real-time tinggi.
Panggilan non-streaming
Anda dapat mengirimkan satu tugas sintesis ucapan tanpa fungsi callback. Hasil lengkap dikembalikan sekaligus, tanpa keluaran streaming antara.
Buat instans kelas SpeechSynthesizer, ikat parameter permintaan, lalu panggil metode call untuk mensintesis dan mengambil data audio biner.
Teks tidak boleh melebihi 20.000 karakter. Untuk informasi selengkapnya, lihat metode call dari kelas SpeechSynthesizer.
Sebelum setiap pemanggilan metode call, inisialisasi ulang instans SpeechSynthesizer.
Panggilan streaming satu arah
Anda dapat mengirimkan satu tugas sintesis ucapan dan menerima hasil antara melalui callback. Hasil sintesis dikembalikan melalui fungsi callback ResultCallback.
Buat instans kelas SpeechSynthesizer, ikat parameter permintaan dan antarmuka callback (ResultCallback), lalu panggil metode call untuk mensintesis dan menerima hasil secara real-time melalui metode on_data dari antarmuka callback (ResultCallback).
Teks tidak boleh melebihi 20.000 karakter. Untuk informasi selengkapnya, lihat metode call dari kelas SpeechSynthesizer.
Sebelum setiap pemanggilan metode call, inisialisasi ulang instans SpeechSynthesizer.
Panggilan streaming dua arah
Anda dapat mengirimkan teks secara terfragmentasi dalam satu tugas sintesis ucapan dan menerima hasil secara real-time melalui callback.
Saat input streaming, Anda dapat memanggil
streaming_callbeberapa kali untuk mengirimkan fragmen teks secara berurutan. Server secara otomatis membaginya menjadi kalimat.Kalimat lengkap langsung disintesis.
Kalimat yang belum lengkap dibuffer hingga lengkap, lalu disintesis.
Saat Anda memanggil
streaming_complete, server memaksa sintesis semua fragmen yang telah diterima tetapi belum diproses, termasuk kalimat yang belum lengkap.Jangan menunggu lebih dari 23 detik antara pengiriman fragmen teks. Jika tidak, kesalahan "request timeout after 23 seconds" akan dikembalikan.
Jika tidak ada lagi teks yang perlu dikirim, segera panggil metode
streaming_completeuntuk mengakhiri tugas.Server menerapkan timeout tetap 23 detik. Klien tidak dapat mengubah pengaturan ini.
Buat instans kelas SpeechSynthesizer
Buat instans kelas SpeechSynthesizer, dan ikat parameter permintaan dan antarmuka callback (ResultCallback).
Streaming
Panggil metode
streaming_calldari kelas SpeechSynthesizer beberapa kali untuk mengirimkan fragmen teks guna disintesis.Saat Anda mengirim teks, server menggunakan metode
on_datadari antarmuka callback (ResultCallback) untuk mengembalikan hasil sintesis ke klien secara real-time.Setiap pengiriman ke metode
streaming_call(parametertext) tidak boleh melebihi 20.000 karakter. Total kumulatif semua pengiriman tidak boleh melebihi 200.000 karakter.Akhiri pemrosesan
Panggil metode
streaming_completedari kelas SpeechSynthesizer untuk mengakhiri sintesis ucapan.Metode ini memblokir thread saat ini hingga callback
on_completeatauon_errordari antarmuka callback (ResultCallback) dipicu.Anda harus selalu memanggil metode ini. Jika tidak, teks akhir mungkin tidak dikonversi menjadi ucapan.
Parameter permintaan
Anda dapat mengatur parameter permintaan di konstruktor kelas SpeechSynthesizer.
Parameter | Tipe | Wajib | Deskripsi |
model | str | Ya | model sintesis ucapan. Versi model yang berbeda memerlukan versi suara yang sesuai:
|
voice | str | Ya | Suara yang digunakan untuk sintesis ucapan. Mendukung suara sistem dan suara hasil kloning:
|
format | enum | Tidak | Tentukan format encoding audio dan laju sampel. Jika Anda menghilangkan Catatan Laju sampel default adalah laju optimal untuk suara yang dipilih. Output menggunakan laju ini secara default tetapi mendukung downsampling atau upsampling. Format dan laju sampel yang didukung meliputi:
|
volume | int | Tidak | Volume. Nilai default: 50. Rentang: [0, 100]. 50 merepresentasikan volume standar. Volume memiliki hubungan linear dengan nilai ini. 0 adalah senyap, dan 100 adalah volume maksimum. Penting Bidang ini berbeda di berbagai versi SDK DashScope:
|
speech_rate | float | Tidak | Laju bicara. Nilai default: 1,0. Rentang: [0,5, 2,0]. 1,0 adalah laju bicara standar. Nilai kurang dari 1,0 memperlambat bicara, dan nilai lebih dari 1,0 mempercepatnya. |
pitch_rate | float | Tidak | Pitch. Nilai ini berfungsi sebagai pengali untuk penyesuaian pitch. Namun, hubungannya dengan perubahan pitch yang dirasakan tidak sepenuhnya linear atau logaritmik. Pilih nilai yang sesuai melalui pengujian. Nilai default: 1,0. Rentang: [0,5, 2,0]. 1,0 adalah pitch alami suara. Nilai lebih dari 1,0 meningkatkan pitch, dan nilai kurang dari 1,0 menurunkannya. |
bit_rate | int | Tidak | Bitrate audio (dalam kbps). Saat format audio adalah Opus, Anda dapat menyesuaikan bitrate menggunakan parameter Nilai default: 32. Rentang: [6, 510]. Catatan Atur |
word_timestamp_enabled | bool | Tidak | Aktifkan timestamp tingkat kata. Default: False.
Fitur ini hanya berfungsi dengan suara hasil kloning untuk cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2, serta dengan suara sistem yang ditandai sebagai mendukung timestamp dalam daftar suara. Timestamp hanya tersedia melalui antarmuka callback. Catatan Atur |
seed | int | Tidak | Seed bilangan acak yang digunakan selama generasi untuk memvariasikan efek sintesis. Dengan versi model, teks, suara, dan parameter lain yang sama, menggunakan seed yang sama akan menghasilkan hasil sintesis identik. Nilai default: 0. Rentang: [0, 65535]. |
language_hints | list[str] | Tidak | Tentukan bahasa target untuk sintesis ucapan guna meningkatkan kualitas sintesis. Gunakan ini saat pelafalan angka, singkatan, simbol, atau efek sintesis untuk bahasa minoritas tidak sesuai harapan, seperti:
Rentang:
Catatan: Parameter ini berupa array, tetapi versi saat ini hanya memproses elemen pertama. Oleh karena itu, kirimkan hanya satu nilai. Penting Parameter ini menentukan bahasa target untuk sintesis ucapan. Pengaturan ini tidak terkait dengan bahasa audio sampel yang digunakan dalam kloning suara. Untuk mengatur bahasa sumber untuk tugas kloning, lihat API Kloning Suara CosyVoice. |
instruction | str | Tidak | Atur instruksi untuk mengontrol efek sintesis seperti dialek, emosi, atau peran. Fitur ini hanya berlaku untuk suara hasil kloning dari model cosyvoice-v3-flash, serta untuk suara sistem yang mendukung Instruct dalam Daftar Suara. Batas panjang: 100 karakter. Karakter Tionghoa (termasuk Hanzi sederhana/tradisional, Kanji Jepang, dan Hanja Korea) dihitung sebagai 2 karakter. Semua karakter lainnya (seperti tanda baca, huruf, angka, kana Jepang/Hangul Korea) dihitung sebagai 1 karakter. Persyaratan penggunaan (berbeda per model):
|
enable_aigc_tag | bool | Tidak | Tambahkan pengenal AIGC tak terlihat ke audio yang dihasilkan. Saat diatur ke True, pengenal disematkan ke format yang didukung (WAV, MP3, OPUS). Default: False. Hanya cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2 yang mendukung fitur ini. Catatan Atur |
aigc_propagator | str | Tidak | Atur bidang Default: UID Alibaba Cloud. Hanya cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2 yang mendukung fitur ini. Catatan Atur |
aigc_propagate_id | str | Tidak | Atur bidang Default: ID permintaan dari permintaan sintesis ucapan ini. Hanya cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2 yang mendukung fitur ini. Catatan Atur |
hot_fix | dict | Tidak | Konfigurasi hotfix teks untuk menyesuaikan pelafalan kata tertentu atau mengganti teks yang akan disintesis. Hanya suara hasil kloning cosyvoice-v3-flash yang mendukung fitur ini. Parameter:
Contoh: |
enable_markdown_filter | bool | Tidak | Aktifkan penyaringan Markdown. Jika diaktifkan, sistem secara otomatis menyaring simbol Markdown dari teks input sebelum mensintesis ucapan, mencegahnya dibaca sebagai konten teks. Hanya suara hasil kloning cosyvoice-v3-flash yang mendukung fitur ini. Default: False. Nilai:
Catatan Atur |
callback | ResultCallback | Tidak |
Antarmuka utama
Kelas SpeechSynthesizer
Impor kelas SpeechSynthesizer menggunakan from dashscope.audio.tts_v2 import *. Kelas ini menyediakan metode inti sintesis ucapan.
Metode | Parameter | Nilai kembali | Deskripsi |
|
| Mengembalikan data audio biner jika tidak ada | Mengonversi seluruh segmen teks (baik teks biasa maupun teks yang berisi SSML) menjadi ucapan. Dua kasus terjadi saat membuat instans
Penting Sebelum setiap pemanggilan metode |
|
| None | Streaming teks untuk sintesis (SSML tidak didukung). Panggil metode ini beberapa kali untuk mengirimkan fragmen teks ke server. Dapatkan hasil melalui metode Lihat panggilan streaming dua arah. |
|
| None | Akhiri sintesis ucapan streaming. Metode ini memblokir thread selama N milidetik (diatur oleh Secara default, metode ini berhenti menunggu setelah 10 menit. Lihat panggilan streaming dua arah. Penting Dalam panggilan streaming dua arah, selalu panggil metode ini. Jika tidak, ucapan hasil sintesis mungkin hilang. |
| None | ID permintaan tugas terakhir | Dapatkan ID permintaan tugas terakhir. |
| None | Delay paket pertama | Dapatkan delay paket pertama tugas saat ini setelah tugas selesai. Delay paket pertama adalah waktu antara pengiriman teks dan penerimaan paket audio pertama, dalam milidetik. Faktor yang memengaruhi delay paket pertama:
Rentang delay khas:
Jika delay paket pertama tetap terlalu tinggi (>2000 ms), pertimbangkan:
|
| None | Pesan terakhir | Dapatkan pesan terakhir (format JSON), berguna untuk mendeteksi kesalahan kegagalan tugas. |
Antarmuka callback (ResultCallback)
Untuk panggilan streaming satu arah atau panggilan streaming dua arah, server mengembalikan informasi status dan data melalui callback. Anda harus mengimplementasikan metode callback untuk menangani respons server.
Anda dapat mengimpor antarmuka ini menggunakan from dashscope.audio.tts_v2 import *.
Metode | Parameter | Nilai kembali | Deskripsi |
| None | None | Dipanggil segera setelah terhubung ke server. |
|
| None | Dipanggil saat server merespons. |
| None | None | Dipanggil setelah semua data sintesis dikembalikan (sintesis ucapan selesai). |
|
| None | Dipanggil saat terjadi kesalahan. |
|
| None | Dipanggil saat server mengembalikan audio hasil sintesis. Anda dapat menggabungkan data audio biner menjadi file audio lengkap dan memutarnya dengan pemutar, atau memutarnya secara real-time dengan pemutar yang mendukung streaming. Penting
|
| None | None | Dipanggil setelah server menutup koneksi. |
Respons
Server mengembalikan data audio biner.
Untuk panggilan non-streaming, Anda dapat memproses data audio biner yang dikembalikan oleh metode
calldari kelas SpeechSynthesizer.Untuk panggilan streaming satu arah atau panggilan streaming dua arah, Anda dapat memproses parameter (bytes) metode
on_datadari antarmuka callback (ResultCallback).
Kode kesalahan
Jika Anda mengalami kesalahan, lihat pesan kesalahan untuk troubleshooting.
Contoh Lainnya
Untuk contoh lainnya, lihat GitHub.
FAQ
Fitur, penagihan, dan pembatasan laju
T: Solusi apa yang bisa saya coba jika mengalami pelafalan tidak akurat?
Anda dapat menyesuaikan efek sintesis ucapan menggunakan SSML.
T: Bagaimana cara memeriksa atau mendapatkan panjang teks untuk setiap sintesis? Penagihan berdasarkan jumlah karakter.
Metode pengambilan tergantung pada apakah logging diaktifkan:
Logging dinonaktifkan
Untuk panggilan non-streaming, Anda dapat menghitung panjang secara manual berdasarkan aturan perhitungan karakter.
Untuk jenis panggilan lain, Anda dapat mengambil jumlah karakter yang ditagih (
characters) dari parametermessagemetodeon_eventdalam antarmuka callback (ResultCallback).messageadalah string JSON. Gunakanmessageterakhir yang diterima.
Logging diaktifkan
Konsol mencetak log yang berisi jumlah karakter yang ditagih. Bidang
charactersmenunjukkan jumlah karakter yang ditagih. Gunakan nilai dari log terakhir yang dicetak.2025-08-27 11:02:09,429 - dashscope - speech_synthesizer.py - on_message - 454 - DEBUG - <<<recv {"header":{"task_id":"62ebb7d6cb0a4080868f0edb######","event":"result-generated","attributes":{}},"payload":{"output":{"sentence":{"words":[]}},"usage":{"characters":15}}}
Troubleshooting
Jika kode Anda menghasilkan kesalahan, Anda dapat melakukan troubleshooting menggunakan informasi di Kode kesalahan.
T: Bagaimana cara mendapatkan ID permintaan?
Anda dapat memperolehnya dengan salah satu cara berikut:
Uraikan string JSON
messagedalam metodeon_eventdari antarmuka callback (ResultCallback).Panggil metode
get_last_request_iddari SpeechSynthesizer.
T: Mengapa SSML gagal?
Anda dapat melakukan troubleshooting langkah demi langkah:
Konfirmasi bahwa Anda memenuhi semua batasan dan kendala.
Gunakan metode yang benar. Hanya metode
calldari kelas SpeechSynthesizer yang mendukung SSML.Pastikan teks Anda adalah teks biasa dan memenuhi persyaratan format. Untuk informasi selengkapnya, lihat Ikhtisar SSML.
T: Mengapa saya tidak bisa memutar audio?
Lakukan troubleshooting untuk setiap skenario sebagai berikut:
Skenario: Audio disimpan sebagai file lengkap (misalnya, xx.mp3)
Konsistensi format audio: Pastikan format audio yang ditentukan dalam parameter permintaan sesuai dengan ekstensi file. Misalnya, jika permintaan menentukan format WAV tetapi ekstensi file MP3, pemutaran mungkin gagal.
Kompatibilitas pemutar: Konfirmasi apakah pemutar mendukung format dan laju sampel file audio. Beberapa pemutar mungkin tidak mendukung laju sampel tinggi atau encoding audio tertentu.
Skenario: Pemutaran audio streaming
Simpan aliran audio sebagai file lengkap dan coba putar dengan pemutar. Jika file tidak dapat diputar, rujuk metode troubleshooting di Skenario 1.
Jika file diputar dengan benar, masalah mungkin terletak pada implementasi pemutaran streaming. Konfirmasi apakah pemutar mendukung pemutaran streaming.
Alat dan pustaka umum yang mendukung pemutaran streaming termasuk ffmpeg, pyaudio (Python), AudioFormat (Java), dan MediaSource (JavaScript).
T: Mengapa pemutaran audio tersendat?
Lakukan troubleshooting untuk setiap skenario sebagai berikut:
Periksa kecepatan pengiriman teks: Pastikan interval yang wajar antara pengiriman teks. Hindari situasi di mana kalimat berikutnya tidak segera dikirim setelah audio sebelumnya selesai diputar.
Periksa performa fungsi callback:
Verifikasi bahwa fungsi callback tidak mengandung logika bisnis berlebihan yang menyebabkan blocking.
Fungsi callback berjalan pada thread WebSocket. Jika diblokir, hal ini dapat memengaruhi kemampuan WebSocket untuk menerima paket jaringan, menyebabkan audio diterima secara tersendat.
Tulis data audio ke buffer audio terpisah dan baca serta proses di thread lain untuk menghindari blocking thread WebSocket.
Periksa stabilitas jaringan: Pastikan koneksi jaringan stabil untuk menghindari gangguan atau penundaan transmisi audio akibat fluktuasi jaringan.
T: Mengapa sintesis ucapan lambat (waktu sintesis lama)?
Lakukan troubleshooting sebagai berikut:
Periksa interval input
Untuk sintesis ucapan streaming, konfirmasi apakah interval pengiriman teks terlalu lama—misalnya, beberapa detik setelah segmen sebelumnya dikirim sebelum mengirim yang berikutnya. Interval berlebihan meningkatkan total waktu sintesis.
Analisis metrik performa
Delay paket pertama: biasanya sekitar 500 ms.
RTF (RTF = total waktu sintesis / durasi audio): biasanya kurang dari 1,0.
T: Bagaimana cara menangani pelafalan salah dalam ucapan hasil sintesis?
Gunakan tag SSML <phoneme> untuk menentukan pelafalan yang benar.
T: Mengapa tidak ada audio yang dihasilkan? Mengapa sebagian teks hilang dari audio? (Audio hilang)
Pastikan Anda telah memanggil metode streaming_complete dari kelas SpeechSynthesizer. Server menunggu cukup banyak teks yang dibuffer sebelum memulai sintesis. Jika Anda tidak memanggil metode streaming_complete, teks akhir mungkin tetap tidak diproses.
T: Bagaimana cara memperbaiki kegagalan verifikasi sertifikat SSL?
Instal sertifikat root sistem
sudo yum install -y ca-certificates sudo update-ca-trust enableTambahkan kode berikut ke aplikasi Anda
import os os.environ["SSL_CERT_FILE"] = "/etc/ssl/certs/ca-bundle.crt"
T: Mengapa saya mendapatkan “SSL: CERTIFICATE_VERIFY_FAILED” di macOS? (websocket ditutup karena [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000))
Kesalahan verifikasi sertifikat OpenSSL mungkin terjadi saat Anda terhubung ke WebSocket. Hal ini sering disebabkan oleh konfigurasi sertifikat Python yang salah. Anda dapat memperbaiki masalah ini secara manual:
Ekspor sertifikat sistem dan setel variabel lingkungan: Jalankan perintah berikut untuk mengekspor semua sertifikat macOS ke file dan menyetelnya sebagai path default untuk Python dan pustaka terkait.
security find-certificate -a -p > ~/all_mac_certs.pem export SSL_CERT_FILE=~/all_mac_certs.pem export REQUESTS_CA_BUNDLE=~/all_mac_certs.pemBuat tautan simbolik untuk memperbaiki konfigurasi OpenSSL Python: Jika konfigurasi OpenSSL Python tidak memiliki sertifikat, Anda dapat membuat symlink. Ganti path dalam perintah berikut dengan direktori instalasi Python aktual Anda.
# 3.9 adalah contoh versi. Sesuaikan dengan versi Python yang Anda instal. ln -s /etc/ssl/* /Library/Frameworks/Python.framework/Versions/3.9/etc/opensslMulai ulang terminal dan bersihkan cache: Tutup dan buka kembali terminal Anda untuk menerapkan variabel lingkungan. Bersihkan cache dan coba kembali koneksi WebSocket.
Langkah-langkah ini dapat menyelesaikan masalah koneksi yang disebabkan oleh salah konfigurasi sertifikat. Jika masalah tetap berlanjut, verifikasi konfigurasi sertifikat server.
T: Mengapa saya mendapatkan “AttributeError: module 'websocket' has no attribute 'WebSocketApp'. Did you mean: 'WebSocket'?”
Kesalahan ini terjadi jika paket websocket-client tidak ada atau terjadi ketidakcocokan versi. Untuk mengatasinya, jalankan perintah berikut:
pip uninstall websocket-client
pip uninstall websocket
pip install websocket-clientIzin dan otentikasi
T: Saya ingin Kunci API saya hanya digunakan untuk layanan sintesis ucapan CosyVoice dan tidak oleh model Model Studio lainnya (isolasi izin). Bagaimana cara melakukannya?
Anda dapat membatasi cakupan Kunci API dengan membuat ruang kerja baru dan hanya mengotorisasi model tertentu. Untuk informasi selengkapnya, lihat Manajemen Ruang Kerja.
Pertanyaan Lainnya
Untuk informasi selengkapnya, lihat QA di GitHub.