Une bibliothèque TTS / STT de haute qualité et fiable pour le serveur et le navigateur
Documents · ChangeLog · Rapport Bogue · Fonction de demande
? Lobe Chat prend en charge les technologies de texte à dispection (TTS) et de parole (STT), permettant à notre application de convertir les messages texte en sorties vocales claires, permettant aux utilisateurs d'interagir avec notre agent conversationnel comme s'ils parlaient à une vraie personne. Les utilisateurs peuvent choisir parmi une variété de voix pour s'associer à l'agent.
Dans le processus de mise en œuvre de cette fonctionnalité, nous avons constaté qu'il n'y avait pas de bibliothèque de frontend TTS (text-vocation) satisfaisante disponible sur le marché. En conséquence, nous avons investi de nombreux efforts, notamment la conversion des données, la gestion des progrès audio et la visualisation de la parole, entre autres tâches.
Note
Par conséquent, nous avons décidé d'affiner notre mise en œuvre et de le rendre open source, dans l'espoir d'aider les développeurs qui souhaitent mettre en œuvre TTS. @ LobeHub / TTS est une boîte à outils TTS de haute qualité développée dans TypeScript, qui prend en charge l'utilisation à la fois sur le côté du serveur et dans le navigateur.
Exécutez le script ci-dessous Utilisez Bun: bun index.js
// index.js
import { EdgeSpeechTTS } from '@lobehub/tts' ;
import { Buffer } from 'buffer' ;
import fs from 'fs' ;
import path from 'path' ;
// Instantiate EdgeSpeechTTS
const tts = new EdgeSpeechTTS ( { locale : 'en-US' } ) ;
// Create speech synthesis request payload
const payload = {
input : 'This is a speech demonstration' ,
options : {
voice : 'en-US-GuyNeural' ,
} ,
} ;
// Call create method to synthesize speech
const response = await tts . create ( payload ) ;
// generate speech file
const mp3Buffer = Buffer . from ( await response . arrayBuffer ( ) ) ;
const speechFile = path . resolve ( './speech.mp3' ) ;
fs . writeFileSync ( speechFile , mp3Buffer ) ;Important
Exécutez sur Node.js
Étant donné que l'environnement Node.js n'a pas l'instance WebSocket , nous devons polyfill. Cela peut être fait en importation du package WS.
// import at the top of the file
import WebSocket from 'ws' ;
global . WebSocket = WebSocket ; import { AudioPlayer , AudioVisualizer , useAudioPlayer } from '@lobehub/tts/react' ;
export default ( ) => {
const { ref , isLoading , ... audio } = useAudioPlayer ( url ) ;
return (
< Flexbox align = { 'center' } gap = { 8 } >
< AudioPlayer audio = { audio } isLoading = { isLoading } style = { { width : '100%' } } />
< AudioVisualizer audioRef = { ref } isLoading = { isLoading } />
</ Flexbox >
) ;
} ;Important
Ce package est uniquement ESM.
Pour installer @lobehub/tts , exécutez la commande suivante:
$ pnpm i @lobehub/tts$ bun add @lobehub/ttsNote
Par travail correct avec next.js ssr, ajoutez transpilePackages: ['@lobehub/tts'] à next.config.js . Par exemple:
const nextConfig = {
transpilePackages : [ '@lobehub/tts' ] ,
} ; Vous pouvez utiliser des codes GitHub pour le développement en ligne:
Ou le cloner pour le développement local:
$ git clone https://github.com/lobehub/lobe-tts.git
$ cd lobe-tts
$ bun install
$ bun devLes contributions de tous types sont plus que les bienvenues, si vous êtes intéressé à contribuer au code, n'hésitez pas à consulter nos problèmes de github pour vous mettre en place pour nous montrer de quoi vous êtes fait.
Chaque bit compte et votre don unique scintille dans notre galaxie de soutien! Vous êtes une star de tir, ayant un impact rapide et brillant sur notre voyage. Merci de croire en nous - votre générosité nous guide vers notre mission, un brillant flash à la fois.

Plus de ressources
Copyright © 2023 Lobehub.
Ce projet est sous licence MIT.