Topik ini menjelaskan parameter dan detail antarmuka SDK Python CosyVoice untuk sintesis ucapan.
Untuk menggunakan model di wilayah China (Beijing), buka halaman API key untuk wilayah China (Beijing).
Panduan pengguna: Untuk informasi lebih lanjut tentang model dan panduan pemilihan model, lihat Sintesis ucapan Real-time - CosyVoice.
Prasyarat
Anda telah mengaktifkan Model Studio dan membuat API key. Untuk mencegah risiko keamanan, ekspor API key sebagai variabel lingkungan alih-alih menyematkannya langsung di 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 API key jangka panjang, token otentikasi sementara lebih aman karena masa berlakunya singkat (60 detik). Token ini cocok untuk skenario panggilan sementara dan dapat mengurangi risiko kebocoran API key secara efektif.
Untuk menggunakan token sementara, gantilah API key yang digunakan untuk otentikasi dalam kode Anda dengan token otentikasi sementara tersebut.
Model dan harga
Model | Harga | Kuota gratis (Catatan) |
cosyvoice-v3-plus | $0,286706 per 10.000 karakter | Tidak ada kuota gratis |
cosyvoice-v3-flash | $0,14335 per 10.000 karakter | |
cosyvoice-v2 | $0,286706 per 10.000 karakter |
Batasan teks dan format
Batas panjang teks
Untuk panggilan non-streaming atau panggilan streaming unidireksional, teks dalam satu permintaan tidak boleh melebihi 20.000 karakter.
Untuk panggilan streaming bidireksional, teks dalam satu permintaan tidak boleh melebihi 20.000 karakter. Panjang kumulatif seluruh teks yang dikirim tidak boleh melebihi 200.000 karakter.
Aturan penghitungan karakter
Satu karakter Tionghoa—termasuk Tionghoa sederhana, Tionghoa tradisional, kanji Jepang, dan hanja Korea—dihitung sebagai 2 karakter. Semua karakter lain, seperti tanda baca, huruf, angka, serta kana atau hangul Jepang/Korea, dihitung sebagai 1 karakter.
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"中文。"→ 2(中) + 2(文) + 1(。) = 5 karakter"中 文。"→ 2(中) + 1(spasi) + 2(文) + 1(。) = 6 karakter"<speak>你好</speak>"→ 2(你) + 2(好) = 4 karakter
Format pengkodean
Gunakan pengkodean UTF-8.
Dukungan ekspresi matematika
Fitur penguraian ekspresi matematika saat ini hanya tersedia untuk model cosyvoice-v2, cosyvoice-v3-flash, dan cosyvoice-v3-plus. Fitur ini mendukung ekspresi matematika umum dari sekolah dasar dan menengah, seperti aritmetika dasar, aljabar, dan geometri.
Lihat Formula LaTeX ke Ucapan.
SSML dukungan
Fitur Speech Synthesis Markup Language (SSML) saat ini hanya tersedia untuk voice kloning model cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2, serta voice sistem yang ditandai sebagai didukung dalam daftar voice. Syarat-syarat berikut harus dipenuhi:
Anda harus menggunakan SDK DashScope versi 1.23.4 atau lebih baru.
Fitur ini hanya mendukung panggilan non-streaming dan panggilan streaming unidireksional (menggunakan metode
calldari kelas SpeechSynthesizer). Fitur ini tidak mendukung panggilan streaming bidireksional (menggunakan metodestreaming_calldari kelas SpeechSynthesizer).Penggunaannya sama seperti sintesis ucapan standar. Kirimkan teks yang berisi SSML ke metode
calldari kelas SpeechSynthesizer.
Memulai
Kelas SpeechSynthesizer adalah kelas utama untuk sintesis ucapan dan mendukung metode pemanggilan berikut:
Panggilan non-streaming: Panggilan blocking yang mengirimkan seluruh teks sekaligus dan langsung mengembalikan audio lengkap. Metode ini cocok untuk skenario sintesis teks pendek.
Panggilan streaming unidireksional: Panggilan non-blocking yang mengirimkan seluruh teks sekaligus dan menggunakan fungsi callback untuk menerima data audio, yang mungkin dikirimkan dalam beberapa bagian. Metode ini cocok untuk skenario sintesis teks pendek yang memerlukan latensi rendah.
Panggilan streaming bidireksional: Panggilan non-blocking yang mengirimkan teks dalam potongan-potongan dan menggunakan fungsi callback untuk menerima aliran audio hasil sintesis secara bertahap secara real-time. Metode ini cocok untuk skenario sintesis teks panjang yang memerlukan latensi rendah.
Panggilan Npn-streaming
Metode ini mengirimkan satu tugas sintesis ucapan tanpa menggunakan fungsi callback. Sintesis tidak mengalirkan hasil antara. Sebaliknya, hasil lengkap dikembalikan sekaligus.
Anda dapat membuat instans kelas SpeechSynthesizer, menyambungkan parameter permintaan, dan memanggil metode call untuk mensintesis teks dan mengambil data audio biner.
Teks yang Anda kirimkan tidak boleh lebih dari 2.000 karakter. Untuk informasi lebih lanjut, lihat metode call dari kelas SpeechSynthesizer.
Sebelum setiap pemanggilan metode call, Anda harus membuat instans SpeechSynthesizer yang baru.
Pemanggilan streaming unidireksional
Metode ini mengirimkan satu tugas sintesis ucapan. Hasil antara dialirkan melalui callback, dan hasil sintesis akhir dialirkan melalui fungsi callback ResultCallback.
Anda dapat membuat instans kelas SpeechSynthesizer, menyambungkan parameter permintaan dan antarmuka ResultCallback, lalu memanggil metode call untuk melakukan sintesis. Anda kemudian dapat mengambil hasil sintesis real-time melalui metode on_data dari antarmuka ResultCallback.
Panjang teks yang dikirimkan tidak boleh melebihi 2.000 karakter. Untuk informasi lebih lanjut, lihat metode call dari kelas SpeechSynthesizer.
Sebelum setiap pemanggilan metode call, Anda harus membuat instans SpeechSynthesizer yang baru.
Panggilan streaming bidireksional
Metode ini memungkinkan Anda mengirimkan teks dalam beberapa bagian dalam satu tugas sintesis ucapan dan menerima hasil sintesis secara real-time melalui callback.
Untuk mengalirkan input, panggil metode
streaming_callbeberapa kali untuk mengirimkan potongan teks secara berurutan. Server secara otomatis membagi potongan teks menjadi kalimat setelah menerimanya:Kalimat lengkap langsung disintesis.
Kalimat yang belum lengkap disimpan dalam buffer dan disintesis setelah menjadi lengkap.
Saat Anda memanggil metode
streaming_complete, server mensintesis seluruh potongan teks yang telah diterima tetapi belum diproses, termasuk kalimat yang belum lengkap.Interval antar pengiriman potongan teks tidak boleh melebihi 23 detik. Jika tidak, terjadi pengecualian "request timeout after 23 seconds".
Jika tidak ada lagi teks yang akan dikirim, Anda harus memanggil metode
streaming_completeuntuk mengakhiri tugas.Server menerapkan timeout 23 detik. Klien tidak dapat mengubah konfigurasi ini.
Anda dapat membuat instans kelas SpeechSynthesizer.
Buat instans kelas SpeechSynthesizer dan sambungkan parameter permintaan dan antarmuka callback ResultCallback.
Mengalirkan data
Alirkan data dengan memanggil metode
streaming_calldari kelas SpeechSynthesizer beberapa kali. Ini mengirimkan teks yang akan disintesis ke sisi server secara bertahap.Saat Anda mengirim teks, server menggunakan metode
on_datadari antarmuka ResultCallback untuk mengembalikan hasil sintesis ke klien secara real-time.Panjang segmen teks (parameter
text) yang dikirimkan dalam setiap pemanggilan metodestreaming_calltidak boleh melebihi 2.000 karakter. Panjang kumulatif seluruh teks yang Anda kirimkan tidak boleh melebihi 200.000 karakter.Pemrosesan selesai.
Akhiri proses dengan memanggil metode
streaming_completedari kelas SpeechSynthesizer untuk mengakhiri tugas sintesis ucapan.Metode ini memblokir thread saat ini hingga metode
on_completeatauon_errordari antarmuka ResultCallback dipicu.Anda harus memanggil metode ini. Jika tidak, bagian akhir teks mungkin tidak berhasil disintesis.
Parameter permintaan
Anda dapat mengatur parameter permintaan di konstruktor kelas SpeechSynthesizer.
Parameter | Tipe | Wajib | Deskripsi |
model | str | Ya | model sintesis ucapan. Model berbeda memerlukan voice yang sesuai:
|
voice | str | Ya | Voice yang digunakan untuk sintesis ucapan. Voice sistem dan voice kloning didukung:
|
format | enum | Tidak | Menentukan format pengkodean audio dan laju sampel. Jika Catatan Laju sampel default adalah laju optimal untuk voice saat ini. Secara default, output menggunakan laju sampel ini. Downsampling dan upsampling juga didukung. Format pengkodean audio dan laju sampel berikut dapat ditentukan:
|
volume | int | Tidak | Volume. Nilai default: 50. Rentang nilai: [0, 100]. Nilai 50 adalah volume standar. Volume memiliki hubungan linear dengan nilai ini. 0 berarti senyap dan 100 adalah volume maksimum. Penting Bidang ini berbeda di berbagai versi SDK DashScope:
|
speech_rate | float | Tidak | Laju ucapan. Nilai default: 1,0. Rentang nilai: [0,5, 2,0]. Nilai 1,0 adalah laju standar. Nilai kurang dari 1,0 memperlambat ucapan, dan nilai lebih dari 1,0 mempercepatnya. |
pitch_rate | float | Tidak | Pitch. Nilai ini adalah pengali untuk penyesuaian pitch. Hubungan antara nilai ini dan pitch yang dirasakan tidak sepenuhnya linear atau logaritmik. Uji berbagai nilai untuk menemukan yang terbaik. Nilai default: 1,0. Rentang nilai: [0,5, 2,0]. Nilai 1,0 adalah pitch alami voice. Nilai lebih dari 1,0 meningkatkan pitch, dan nilai kurang dari 1,0 menurunkannya. |
bit_rate | int | Tidak | Bitrate audio dalam kbps. Jika format audio adalah Opus, Anda dapat menyesuaikan bitrate menggunakan parameter Nilai default: 32. Rentang nilai: [6, 510]. Catatan
|
word_timestamp_enabled | bool | Tidak | Menentukan apakah timestamp tingkat kata diaktifkan. Nilai default: False.
Fitur ini hanya berlaku untuk voice kloning model cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2, serta voice sistem dalam Daftar voice yang ditandai sebagai didukung. Hasil timestamp hanya dapat diambil melalui antarmuka callback. Catatan
|
seed | int | Tidak | Seed bilangan acak yang digunakan selama generasi, yang memvariasikan efek sintesis. Jika versi model, teks, voice, dan parameter lainnya sama, penggunaan seed yang sama akan mereproduksi hasil sintesis yang identik. Nilai default: 0. Rentang nilai: [0, 65535]. |
language_hints | list[str] | Tidak | Menentukan bahasa target untuk sintesis ucapan guna meningkatkan efek sintesis. Gunakan parameter ini ketika pelafalan angka, singkatan, atau simbol, atau ketika efek sintesis untuk bahasa non-Tionghoa tidak sesuai harapan. Nilai yang valid:
Catatan: Meskipun parameter ini berupa array, versi saat ini hanya memproses elemen pertama. Oleh karena itu, Anda hanya boleh mengirimkan satu nilai. Penting Parameter ini menentukan bahasa target untuk sintesis ucapan. Pengaturan ini independen dari bahasa audio sampel yang digunakan untuk kloning suara. Untuk mengatur bahasa sumber dalam tugas kloning suara, lihat API kloning suara CosyVoice. |
instruction | str | Tidak | Set instruction: Fitur ini hanya tersedia untuk voice kloning model cosyvoice-v3-flash dan cosyvoice-v3-plus, serta voice sistem yang ditandai sebagai didukung dalam Daftar voice. Tidak ada nilai default. Parameter ini tidak berpengaruh jika tidak diatur. Sintesis ucapan memiliki efek berikut:
|
enable_aigc_tag | bool | Tidak | Menentukan apakah akan menambahkan identifier AIGC tak terlihat ke audio yang dihasilkan. Jika diatur ke True, identifier tak terlihat tersebut disematkan ke audio untuk format yang didukung (WAV, MP3, dan Opus). Nilai default: False. Fitur ini hanya didukung oleh model cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2. Catatan
|
aigc_propagator | str | Tidak | Mengatur bidang Nilai default: UID Alibaba Cloud. Fitur ini hanya didukung oleh model cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2. Catatan
|
aigc_propagate_id | str | Tidak | Mengatur bidang Nilai default: Request ID dari permintaan sintesis ucapan saat ini. Fitur ini hanya didukung oleh model cosyvoice-v3-flash, cosyvoice-v3-plus, dan cosyvoice-v2. Catatan
|
callback | ResultCallback | Tidak |
Antarmuka utama
Kelas SpeechSynthesizer
Kelas SpeechSynthesizer adalah antarmuka utama untuk sintesis ucapan. Anda dapat mengimpor kelas ini menggunakan from dashscope.audio.tts_v2 import *.
Metode | Parameter | Nilai kembali | Deskripsi |
|
| Mengembalikan data audio biner jika | Mengubah seluruh segmen teks menjadi ucapan. Teks dapat berupa teks biasa atau berisi SSML. Saat membuat instans
Penting Sebelum setiap pemanggilan metode |
|
| None | Mengalirkan teks untuk disintesis. Teks yang berisi SSML tidak didukung. Anda dapat memanggil antarmuka ini beberapa kali untuk mengirimkan teks yang akan disintesis ke server secara bertahap. Hasil sintesis diambil melalui metode Untuk informasi lebih lanjut, lihat Panggilan streaming bidireksional. |
|
| None | Mengakhiri sintesis ucapan streaming. Metode ini memblokir thread saat ini selama durasi yang ditentukan oleh Secara default, tunggu berhenti jika waktu tunggu melebihi 10 menit. Untuk informasi lebih lanjut, lihat Panggilan streaming bidireksional. Penting Saat melakukan panggilan streaming bidireksional, panggil metode ini. Jika tidak, ucapan yang disintesis mungkin tidak lengkap. |
| None | ID permintaan tugas terakhir. | Mendapatkan ID permintaan tugas terakhir. |
| None | Latensi paket pertama | Mendapatkan latensi paket pertama. Latensi biasanya sekitar 500 ms. Latensi paket pertama adalah waktu dalam milidetik dari saat Anda mengirim teks hingga menerima paket audio pertama. Periksa latensi setelah tugas selesai. Saat pertama kali mengirim teks, koneksi WebSocket harus dibuat. Oleh karena itu, latensi paket pertama mencakup waktu yang diperlukan untuk membuat koneksi. |
| None | Pesan terakhir | Mendapatkan pesan terakhir, yang dalam format JSON. Anda dapat menggunakannya untuk mengambil error kegagalan tugas. |
Antarmuka callback (ResultCallback)
Untuk panggilan streaming unidireksional atau panggilan streaming bidireksional, server mengembalikan informasi dan data proses penting ke klien melalui callback. Anda harus mengimplementasikan metode callback untuk memproses informasi dan data yang dikembalikan.
Anda dapat mengimpornya menggunakan from dashscope.audio.tts_v2 import *.
Metode | Parameter | Nilai kembali | Deskripsi |
| None | None | Metode ini dipanggil segera setelah koneksi dengan server berhasil dibuat. |
|
| None | Metode ini dipanggil saat layanan mengirimkan respons. |
| None | None | Metode ini dipanggil setelah seluruh data hasil sintesis dikembalikan dan sintesis ucapan selesai. |
|
| None | Metode ini dipanggil saat terjadi pengecualian. |
|
| None | Metode ini dipanggil saat server mengembalikan audio hasil sintesis. Gabungkan data audio biner menjadi file audio lengkap untuk diputar, atau putar secara real-time dengan pemutar yang mendukung pemutaran streaming. Penting
|
| None | None | Metode ini dipanggil setelah layanan menutup koneksi. |
Respons
Server mengembalikan data audio biner:
Panggilan non-streaming: Anda dapat memproses data audio biner yang dikembalikan oleh metode
calldari kelas SpeechSynthesizer.Untuk panggilan streaming unidireksional atau panggilan streaming bidireksional, Anda dapat memproses parameter (data byte) dari metode
on_datadari antarmuka callback ResultCallback.
Kode error
Untuk informasi troubleshooting, lihat Pesan error.
Contoh lainnya
Untuk contoh lainnya, lihat GitHub.
FAQ
Fitur, penagihan, dan pembatasan laju
T: Apa yang bisa saya lakukan untuk memperbaiki pelafalan yang tidak akurat?
Anda dapat menggunakan SSML untuk menyesuaikan output sintesis ucapan.
T: Sintesis ucapan ditagih berdasarkan jumlah karakter teks. Bagaimana cara melihat atau mendapatkan panjang teks untuk setiap sintesis?
Ini tergantung pada apakah logging diaktifkan:
Logging dinonaktifkan.
Untuk panggilan non-streaming, Anda dapat menghitung jumlah karakter sesuai aturan penghitungan karakter.
Atau, Anda dapat mengambil informasi dari parameter
messagedari metodeon_eventdari antarmuka callback ResultCallback.messageadalah string JSON yang dapat Anda uraikan untuk mengambil jumlah karakter yang dikenai biaya untuk permintaan saat ini dari parametercharacters. Gunakanmessageterakhir yang Anda terima.
Logging diaktifkan.
Jika logging diaktifkan, konsol mencetak log yang berisi parameter
characters. Parameter ini menunjukkan jumlah karakter yang dikenai biaya untuk permintaan tersebut. Gunakan nilai dari entri log terakhir untuk permintaan tersebut.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 Anda mengalami error kode, rujuk Kode error untuk memecahkan masalah.
T: Bagaimana cara mendapatkan Request ID?
Anda dapat mengambilnya dengan salah satu dari dua cara berikut:
Uraikan string JSON
messagedi metodeon_eventdari antarmuka callback ResultCallback.Panggil metode
get_last_request_iddari SpeechSynthesizer.
T: Mengapa fitur SSML gagal?
Periksa hal-hal berikut:
Pastikan cakupan benar.
Pastikan Anda telah menginstal versi terbaru SDK DashScope.
Pastikan Anda menggunakan antarmuka yang benar. SSML hanya didukung oleh metode
calldari kelas SpeechSynthesizer.Pastikan teks untuk sintesis berupa teks biasa dan memenuhi format yang diperlukan. Untuk informasi lebih lanjut, lihat Pengenalan SSML.
T: Mengapa audio tidak bisa diputar?
Pecahkan masalah ini berdasarkan skenario berikut:
Audio disimpan sebagai file lengkap, seperti file .mp3.
Konsistensi format audio: Pastikan format audio yang ditentukan dalam parameter permintaan sesuai dengan ekstensi file. Misalnya, pemutaran mungkin gagal jika format audio diatur ke WAV dalam parameter permintaan tetapi file memiliki ekstensi .mp3.
Kompatibilitas pemutar: Pastikan pemutar Anda mendukung format dan laju sampel file audio tersebut. Misalnya, beberapa pemutar mungkin tidak mendukung laju sampel tinggi atau pengkodean audio tertentu.
Audio diputar dalam mode streaming.
Simpan aliran audio sebagai file lengkap dan coba putar. Jika file gagal diputar, lihat langkah troubleshooting untuk skenario pertama.
Jika file dapat diputar dengan benar, masalahnya mungkin terletak pada implementasi pemutaran streaming. Pastikan pemutar Anda 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?
Pecahkan masalah ini berdasarkan skenario berikut:
Periksa kecepatan pengiriman teks: Pastikan interval pengiriman teks wajar. Hindari penundaan dalam mengirimkan segmen teks berikutnya setelah audio untuk segmen sebelumnya selesai diputar.
Periksa performa fungsi callback:
Periksa apakah fungsi callback berisi logika bisnis berlebihan yang dapat menyebabkannya terblokir.
Fungsi callback berjalan di thread WebSocket. Jika thread ini terblokir, hal tersebut dapat mengganggu kemampuan WebSocket untuk menerima paket jaringan, sehingga menyebabkan audio tersendat.
Untuk menghindari pemblokiran thread WebSocket, tulis data audio ke buffer audio terpisah lalu gunakan thread lain untuk membaca dan memprosesnya.
Periksa stabilitas jaringan: Pastikan koneksi jaringan Anda stabil untuk mencegah gangguan atau penundaan transmisi audio akibat fluktuasi jaringan.
T: Mengapa sintesis ucapan lambat (waktu sintesis lama)?
Lakukan langkah troubleshooting berikut:
Periksa interval input
Jika Anda menggunakan sintesis ucapan streaming, periksa apakah interval pengiriman teks terlalu lama. Misalnya, penundaan beberapa detik sebelum mengirimkan segmen berikutnya akan meningkatkan total waktu sintesis.
Analisis metrik performa
Latensi paket pertama: Biasanya sekitar 500 ms.
Faktor Real-Time (RTF): Dihitung sebagai Total Waktu Sintesis / Durasi Audio. RTF biasanya kurang dari 1,0.
T: Bagaimana cara menangani pelafalan yang salah dalam ucapan hasil sintesis?
Gunakan tag <phoneme> SSML untuk menentukan pelafalan yang benar.
T: Mengapa tidak ada ucapan yang dikembalikan? Mengapa bagian akhir teks tidak berhasil dikonversi menjadi ucapan? (Ucapan hasil sintesis hilang)
Periksa apakah Anda memanggil metode streaming_complete dari kelas SpeechSynthesizer. Server menyimpan teks dalam cache dan mulai mensintesis hanya setelah menerima cukup teks. Jika Anda tidak memanggil metode streaming_complete, teks yang tersisa dalam cache mungkin tidak disintesis.
T: Bagaimana cara menangani kegagalan verifikasi sertifikat SSL?
Instal sertifikat root sistem.
sudo yum install -y ca-certificates sudo update-ca-trust enableTambahkan konten berikut ke kode Anda.
import os os.environ["SSL_CERT_FILE"] = "/etc/ssl/certs/ca-bundle.crt"
T: Apa penyebab pengecualian "SSL: CERTIFICATE_VERIFY_FAILED" pada macOS? (websocket ditutup karena [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000))
Saat menghubungkan ke WebSocket, Anda mungkin mengalami kegagalan verifikasi sertifikat OpenSSL dengan pesan yang menunjukkan bahwa sertifikat tidak dapat ditemukan. Hal ini biasanya terjadi karena konfigurasi sertifikat yang salah di lingkungan Python. Ikuti langkah-langkah berikut untuk menemukan dan memperbaiki masalah sertifikat secara manual:
Ekspor sertifikat sistem dan atur variabel lingkungan. Jalankan perintah berikut untuk mengekspor semua sertifikat dari sistem macOS Anda ke file dan atur file ini sebagai jalur sertifikat default untuk Python dan pustaka terkaitnya:
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 Anda tidak memiliki sertifikat, jalankan perintah berikut untuk membuat tautan simbolik. Pastikan untuk mengganti path dalam perintah dengan path instalasi aktual versi Python lokal Anda:
# 3.9 adalah contoh nomor versi. Sesuaikan path sesuai versi Python yang terinstal di lokal Anda. ln -s /etc/ssl/* /Library/Frameworks/Python.framework/Versions/3.9/etc/opensslMulai ulang terminal dan bersihkan cache. Setelah menyelesaikan langkah-langkah di atas, tutup dan buka kembali terminal untuk memastikan variabel lingkungan berlaku. Bersihkan cache apa pun yang mungkin ada dan coba sambungkan kembali ke WebSocket.
Langkah-langkah ini seharusnya dapat menyelesaikan masalah koneksi yang disebabkan oleh konfigurasi sertifikat yang salah. Jika masalah tetap berlanjut, periksa apakah konfigurasi sertifikat di server target sudah benar.
T: Apa penyebab error "AttributeError: module 'websocket' has no attribute 'WebSocketApp'. Did you mean: 'WebSocket'?" saat menjalankan kode?
Error ini terjadi karena websocket-client tidak terinstal atau versinya tidak sesuai. Jalankan perintah berikut untuk menyelesaikan masalah:
pip uninstall websocket-client
pip uninstall websocket
pip install websocket-clientIzin dan otentikasi
T: Saya ingin API key saya hanya digunakan untuk layanan sintesis ucapan CosyVoice, bukan untuk model Model Studio lainnya (isolasi izin). Apa yang harus saya lakukan?
Anda dapat membuat ruang kerja dan hanya mengotorisasi model tertentu untuk membatasi cakupan API key. Lihat Kelola ruang kerja.
Pertanyaan lainnya
Lihat Q&A di GitHub.