Cara melaksanakan main balik suara dinamik berdasarkan SpringBoot dan Vue
May 12, 2023 pm 07:13 PM1. Antara muka latar belakang mengembalikan bait[]
1. Tambahkan antara muka dalam pengawal dan kembalikan bait[]
Set menghasilkan = “aplikasi/oktet. -strim ”
Tetapkan jenis pulangan ResponseEntity
@PostMapping(value = "/v/voice", produces = "application/octet-stream") public ResponseEntity<byte[]> voice(@RequestBody JSONObject param, HttpServletResponse response) throws IOException { String text = param.getString("text"); // 以下代碼調(diào)用阿里云接口,把文字轉(zhuǎn)語音 byte[] voice = SpeechRestfulUtil.text2voice(text); // 返回音頻byte[] return ResponseEntity.ok().body(voice); }
Contoh ini adalah untuk memanggil antara muka Alibaba Cloud tts ke tukar teks kepada pertuturan
2. Tambah penghurai dalam configureMessageConverters
ByteArrayHttpMessageConverter
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(objectMapper()); converters.add(jackson2HttpMessageConverter); converters.add(new ByteArrayHttpMessageConverter()); }
2. Bahagian hadapan Vue memanggil antara muka untuk memainkan suara
Gunakan axios untuk memanggil antara muka bahagian belakang Set responseType=blob
1) Dapatkan audio kawalan main balik penyemak imbas
2) Gunakan FileReader untuk membaca bait yang diperolehi[]
3) FileReader mengikat acara muat dan membaca Mainkan suara selepas mengambil bait[]
function doVoice(){ axios({ method:'post', url:req.voice, responseType:'blob', data:{text:data.info} // 需要播放的文本 }).then(function (response) { console.log(response); if(response.status===200){ // 1)得到瀏覽器播放控件 audioContext let audioContext = new (window.AudioContext || window.webkitAudioContext)(); let reader = new FileReader(); reader.onload = function(evt) { if (evt.target.readyState === FileReader.DONE) { // 3)FileReader綁定load事件,讀取byte[]完成后播放語音 audioContext.decodeAudioData(evt.target.result, function(buffer) { // 解碼成pcm流 let audioBufferSouceNode = audioContext.createBufferSource(); audioBufferSouceNode.buffer = buffer; audioBufferSouceNode.connect(audioContext.destination); audioBufferSouceNode.start(0); }, function(e) { console.log(e); }); } }; // 2)使用FileReader讀取得到的byte[] reader.readAsArrayBuffer(response.data); } }) .catch(function (error) { // handle error console.log(error); }) .finally(function () { // always executed }); }
Atas ialah kandungan terperinci Cara melaksanakan main balik suara dinamik berdasarkan SpringBoot dan Vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk membangunkan aplikasi Web Python yang lengkap, ikuti langkah -langkah berikut: 1. Pilih rangka kerja yang sesuai, seperti Django atau Flask. 2. Mengintegrasikan pangkalan data dan menggunakan ORM seperti SQLalChemy. 3. Reka bentuk front-end dan gunakan Vue atau React. 4. Lakukan ujian, gunakan pytest atau unittest. 5. Menyebarkan aplikasi, gunakan Docker dan platform seperti Heroku atau AWS. Melalui langkah -langkah ini, aplikasi web yang kuat dan cekap boleh dibina.

Inti sistem penghalaan depan adalah untuk memetakan URL ke komponen. Vuerouter dan Reactrouter Menyedari Switching Halaman Refresh-Free dengan mendengar perubahan URL dan memuatkan komponen yang sepadan. Kaedah konfigurasi termasuk: 1. 2. Routing dinamik, memuatkan komponen yang berbeza mengikut parameter URL; 3. Pengawal laluan, melakukan logik seperti cek kebenaran sebelum dan selepas peralihan laluan.

ReaktivityTransforminVueSformedToSimplifyHandlingReActiveDataByautomatiallyTrackingAngingReActivityWithoutrequiringManualRef

Perbezaan teras antara vue.js dan bertindak balas dalam pembangunan komponen adalah: 1) Vue.js menggunakan sintaks templat dan API pilihan, manakala React menggunakan komponen jsx dan fungsional; 2) Vue.js menggunakan sistem responsif, React menggunakan data yang tidak berubah dan DOM maya; 3) Vue.js menyediakan cangkuk kitaran hidup berganda, manakala React menggunakan lebih banyak cangkuk useeffect.

PengantaraburanandlocalizationInvueAppsarePrimaryHandledusingTheVUEI18nplugin.1.Installvue-I18nvianpmoryarn.2.Createlo CalejsonFiles (mis., En.json, Es.json) fortranslationMessages.3.Setupthei18ninstanceinmain.jswithlocaleconfigurationandMessageFil

Apabila vue.js mengendalikan kemas kini array, paparan tidak dikemas kini kerana object.defineproperty tidak dapat secara langsung mendengar perubahan array. Penyelesaian termasuk: 1. Gunakan kaedah Vue.Set untuk mengubahsuai indeks array; 2. Menetapkan semula keseluruhan array; 3. Gunakan kaedah mutasi yang ditulis semula untuk mengendalikan array.

Menggunakan: keyattributewithv-forinvueisessfationforperformanceAndCorrectbehavior.first, ithelpsvuetrackeachelementeficientlybyenableTheVirtualDomdiffingalgorithmoidentifyandupdateOnlyWhatShipoSheSoSheSoSheSoSheSoSheSoRoSheSoRoSheSoRoSheSoSheSoShoSoSondoadoSoRoSheSoSheSoSheSoRoSheSoRoSheSoRoSoSondoadoSoRoSoSondoadoSoRoSoRoSoRoSoRoSoRoSORSerervescoSoRoSOREVES

Kaedah untuk mengoptimumkan prestasi senarai besar dan komponen kompleks dalam VUE termasuk: 1. Gunakan Arahan V-Once untuk memproses kandungan statik untuk mengurangkan kemas kini yang tidak perlu; 2. Melaksanakan menatal maya dan hanya memberikan kandungan kawasan visual, seperti menggunakan perpustakaan Vue-Virtual-Scroller; 3. Komponen cache melalui Keep-Alive atau V-once untuk mengelakkan pendua gunung; 4. Gunakan sifat dan pendengar yang dikira untuk mengoptimumkan logik responsif untuk mengurangkan julat penyampaian semula; 5. Ikuti amalan terbaik, seperti menggunakan kekunci unik dalam V-untuk, mengelakkan fungsi inline dalam templat, dan menggunakan alat analisis prestasi untuk mencari kesesakan. Strategi ini dapat meningkatkan kelancaran aplikasi dengan berkesan.
