مكتبة TTS/STT عالية الجودة وموثوقة للخادم والمتصفح
المستندات · Changelog · تقرير خطأ · طلب ميزة
؟ يدعم فص دردشة الدردشة النصية إلى الكلام (TTS) وتقنيات الكلام إلى النص (STT) ، مما يتيح تطبيقنا من تحويل الرسائل النصية إلى مخرجات صوتية واضحة ، مما يسمح للمستخدمين بالتفاعل مع وكيل المحادثة لدينا كما لو كانوا يتحدثون إلى شخص حقيقي. يمكن للمستخدمين الاختيار من بين مجموعة متنوعة من الأصوات إلى الاقتران مع الوكيل.
في عملية تنفيذ هذه الميزة ، وجدنا أنه لا يوجد مكتبة مرضية TTS (نص إلى نص) متوفرة في السوق. نتيجة لذلك ، استثمرنا الكثير من الجهد ، بما في ذلك تحويل البيانات ، وإدارة التقدم الصوتي ، وتصور الكلام ، من بين مهام أخرى.
ملحوظة
لذلك ، قررنا تحسين تنفيذنا وجعله مفتوحًا ، على أمل مساعدة المطورين الذين يرغبون في تنفيذ TTS. @lobhub/tts عبارة عن مجموعة أدوات TTS عالية الجودة تم تطويرها في TypeScript ، والتي تدعم الاستخدام على جانب الخادم وفي المتصفح.
قم بتشغيل البرنامج النصي أدناه ، استخدم 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 ) ;مهم
تشغيل على node.js
نظرًا لأن بيئة Node.js تفتقر إلى مثيل WebSocket ، نحتاج إلى polyfill websocket. يمكن القيام بذلك عن طريق استيراد حزمة 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 >
) ;
} ;مهم
هذه الحزمة هي ESM فقط.
لتثبيت @lobehub/tts ، قم بتشغيل الأمر التالي:
$ pnpm i @lobehub/tts$ bun add @lobehub/ttsملحوظة
من خلال العمل بشكل صحيح مع Next.js SSR ، أضف transpilePackages: ['@lobehub/tts'] إلى next.config.js . على سبيل المثال:
const nextConfig = {
transpilePackages : [ '@lobehub/tts' ] ,
} ; يمكنك استخدام مساحات رموز github للتطوير عبر الإنترنت:
أو استنساخه للتنمية المحلية:
$ git clone https://github.com/lobehub/lobe-tts.git
$ cd lobe-tts
$ bun install
$ bun devتكون المساهمات من جميع الأنواع أكثر من موضع ترحيب ، إذا كنت مهتمًا بالمساهمة في الكود ، فلا تتردد في مراجعة مشكلات github الخاصة بنا للتعثر لتظهر لنا ما صنعته.
كل بت مهمات وتبرع لمرة واحدة تتألق في مجرتنا من الدعم! أنت نجم إطلاق نار ، مما يجعل تأثير سريع ومشرق على رحلتنا. شكرًا لك على إيمانك بنا - يرشدنا كرمك نحو مهمتنا ، فلاش رائع في وقت واحد.

المزيد من الموارد
حقوق الطبع والنشر © 2023 LoBehub.
هذا المشروع مرخص معهد ماساتشوستس للتكنولوجيا.