Java
javaDidacticiel
Comment implémenter la lecture vocale dynamique basée sur SpringBoot et Vue
Comment implémenter la lecture vocale dynamique basée sur SpringBoot et Vue
1. L'interface d'arrière-plan renvoie l'octet[]
1 Ajoutez une interface dans le contrôleur et renvoie l'octet[]
. Définir produit = "application/octet-stream"
Définir le type de retour 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");
// 以下代码调用阿里云接口,把文字转语音
byte[] voice = SpeechRestfulUtil.text2voice(text);
// 返回音频byte[]
return ResponseEntity.ok().body(voice);
}# 🎜🎜 #Cet exemple consiste à appeler l'interface tts d'Alibaba Cloud pour convertir du texte en parole2 Ajoutez un analyseur dans configureMessageConvertersByteArrayHttpMessageConverter
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(objectMapper());
converters.add(jackson2HttpMessageConverter);
converters.add(new ByteArrayHttpMessageConverter());
}#. 🎜🎜 #2. Le front-end de Vue appelle l'interface pour lire la voix Utilisez axios pour appeler l'interface back-end et définissez responseType=blob
1) Obtenez le navigateur contrôle de lecture audioContext
#🎜 🎜#2) Utilisez FileReader pour lire l'octet obtenu[]3) FileReader lie l'événement de chargement et joue la voix après avoir terminé la lecture de l'octet[]# 🎜🎜#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
});
}Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Outils d'IA chauds
Undress AI Tool
Images de déshabillage gratuites
Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes
AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.
Clothoff.io
Dissolvant de vêtements AI
Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !
Article chaud
Outils chauds
Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit
SublimeText3 version chinoise
Version chinoise, très simple à utiliser
Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP
Dreamweaver CS6
Outils de développement Web visuel
SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)
Sujets chauds
Comment ajouter des fonctions aux boutons pour Vue
Apr 08, 2025 am 08:51 AM
Vous pouvez ajouter une fonction au bouton VUE en liant le bouton dans le modèle HTML à une méthode. Définissez la logique de la fonction de méthode et d'écriture dans l'instance Vue.
React vs. Vue: Quel framework utilise Netflix?
Apr 14, 2025 am 12:19 AM
NetflixUSESACustomFrameworkCalled "gibbon" builtonReact, notreactorVueDirectly.1) teamExperience: ChoOsBasedOnFamiliarity.
Frontend de Netflix: Exemples et applications de React (ou Vue)
Apr 16, 2025 am 12:08 AM
Netflix utilise React comme cadre frontal. 1) Le modèle de développement composant de React et un écosystème fort sont les principales raisons pour lesquelles Netflix l'a choisi. 2) Grâce à la composante, Netflix divise les interfaces complexes en morceaux gérables tels que les lecteurs vidéo, les listes de recommandations et les commentaires des utilisateurs. 3) Le cycle de vie virtuel et composant virtuel de React optimise l'efficacité du rendu et la gestion de l'interaction des utilisateurs.
Comment sauter à la div de Vue
Apr 08, 2025 am 09:18 AM
Il existe deux façons de sauter des éléments div dans Vue: Utilisez le routeur Vue et ajoutez le composant routeur-link. Ajoutez l'écouteur de l'événement @Click et appelez ceci. $ Router.push () pour sauter.
React, Vue et l'avenir du frontend de Netflix
Apr 12, 2025 am 12:12 AM
Netflix utilise principalement React comme cadre frontal, complété par Vue pour des fonctions spécifiques. 1) La composante de React et le DOM virtuel améliorent l'efficacité des performances et du développement des applications Netflix. 2) Vue est utilisée dans les outils internes et les petits projets de Netflix, et sa flexibilité et sa facilité d'utilisation sont essentielles.
Comment sauter une balise à Vue
Apr 08, 2025 am 09:24 AM
Les méthodes pour implémenter le saut d'une balise dans Vue incluent: l'utilisation de la balise A dans le modèle HTML pour spécifier l'attribut HREF. Utilisez le composant routeur-link du routage Vue. Utilisez cette méthode. $ Router.push () dans JavaScript. Les paramètres peuvent être passés à travers le paramètre de requête et les itinéraires sont configurés dans les options de routeur pour les sauts dynamiques.
Comment implémenter un saut de composants pour Vue
Apr 08, 2025 am 09:21 AM
Il existe les méthodes suivantes pour implémenter le saut de composants dans Vue: Utilisez Router-Link et & lt; Router-View & gt; Composants pour effectuer un saut hyperlien et spécifiez: pour attribuer comme chemin cible. Utilisez le & lt; Router-View & gt; Composant directement pour afficher les composants rendus actuellement routés. Utilisez le router.push () et le router.replace () pour la navigation programmatique. Le premier sauve l'histoire et le second remplace l'itinéraire actuel sans quitter les enregistrements.
Comment développer une application Web Python complète?
May 23, 2025 pm 10:39 PM
Pour développer une application Web Python complète, suivez ces étapes: 1. Choisissez le cadre approprié, tel que Django ou Flask. 2. Intégrez les bases de données et utilisez des orms tels que Sqlalchemy. 3. Concevez le frontal et utilisez Vue ou React. 4. Effectuez le test, utilisez Pytest ou Unittest. 5. Déployer les applications, utiliser Docker et des plates-formes telles que Heroku ou AWS. Grâce à ces étapes, des applications Web puissantes et efficaces peuvent être construites.


