आइए देखें कि कोई पाइपर , पाइपर-सीटी और नामित पाइप का उपयोग करके एक तदर्थ, स्थानीय (ऑफ़लाइन) टेक्स्ट-टू-स्पीच सिंथेसाइज़र कैसे सेटअप कर सकता है।
जीएनयू/लिनक्स आधारित सिस्टम पर पाइपर स्थापित करने के लिए, मैं नामित पाइपों का उपयोग करके एक सामान्य आर्किटेक्चर का वर्णन करूंगा, जो थोड़े से मैनुअल सेटअप के साथ, पाइपर की मदद से सिस्टम वाइड टेक्स्ट-टू-स्पीच की अनुमति देने के लिए पर्याप्त सीधा है। -सीटी और कुछ छोटे व्यापार-बंद (यह सरल है, फिर भी यह समानांतर भाषण प्रसंस्करण का समर्थन नहीं करेगा)।
शुरू करने के लिए, आइए जीथब पर होस्ट किए गए रिपॉजिटरी से निर्मित नवीनतम पाइपर स्टैंड-अलोन (इसे लिखने के समय 2023.11.14-2 ) प्राप्त करें। संपीड़ित संग्रह को डाउनलोड करने के बाद, हम अपने पाइपर सेटअप के लिए एक निर्देशिका संरचना बनाएंगे। रूट निर्देशिका निम्नलिखित उप-निर्देशिकाओं के साथ /opt/wind
पर होगी:
/opt/wind/piper
(पाइपर का निर्माण किया जाएगा)/opt/wind/channels
(नामित पाइप शामिल होंगे)
डीकंप्रेसिंग के बाद, पाइपर निष्पादन योग्य /opt/wind/piper/piper
, साथ ही साथ आने वाली लाइब्रेरी और espeak-ng-data
पर उपलब्ध होना चाहिए।
पाइपर द्वारा उपयोग किए जाने वाले वॉयस मॉडल को प्रबंधित करने के लिए, मैं पाइपर-व्हिसल का उपयोग करने की सलाह दूंगा, जो कि पायथन में लिखी गई एक कमांड-लाइन उपयोगिता है, जो आवाजों को डाउनलोड करना और प्रबंधित करना अधिक सुविधाजनक बनाती है।
आप नवीनतम व्हील फ़ाइल इसके gitlab या github रिलीज़ पृष्ठ से प्राप्त कर सकते हैं। व्हील फ़ाइल स्थापित करने के बाद, आइए कुछ भाषण उत्पन्न करने के लिए एक आवाज़ लाएँ। सबसे पहले piper_whistle -vR
पर कॉल करके डेटाबेस को अपडेट करते हैं। अंग्रेजी भाषण के लिए, मुझे अल्बा नामक महिला आवाज काफी पसंद है। सीटी का उपयोग करके, हम piper_whistle list -l en_GB -i 2
का उपयोग करके सभी उपलब्ध अंग्रेजी (जीबी) आवाजों की सूची प्राप्त कर सकते हैं। आवाज इंडेक्स 2 पर है। इसलिए इंस्टॉल करने के लिए बस piper_whistle install en_GB 2
कॉल करें।
आगे, आइए आवश्यक नामित पाइप बनाएं। परिणामी संरचना इस तरह दिखेगी:
/opt/wind/channels/speak
(JSON पेलोड स्वीकार करता है)/opt/wind/channels/input
(पाइपर द्वारा पढ़ा गया)/opt/wind/channels/ouput
(पाइपर द्वारा लिखित)
नामित पाइप बनाने के लिए, आप निम्न कमांड का उपयोग कर सकते हैं: mkfifo -m 755 /opt/wind/channels/input
अंत में, हम अलग-अलग शेल में तीन प्रक्रियाएँ बनाते हैं:
tail -F /opt/wind/channels/speak | tee /opt/wind/channels/input
/opt/wind/piper/piper -m $(piper_whistle path alba@medium) --debug --json-input --output_raw < /opt/wind/channels/input > /opt/wind/channels/output
aplay --buffer-size=777 -r 22050 -f S16_LE -t raw < /opt/wind/channels/output
Tty0 पर प्रक्रिया यह सुनिश्चित करती है कि पाइपर या एप्ले द्वारा प्रसंस्करण समाप्त होने के बाद भी पाइप खुला रखा जाए। इस तरह, हम टीटीएस अनुरोधों को कतारबद्ध कर सकते हैं और बाद में उन्हें चला या सहेज सकते हैं।
चूंकि यदि आप उपरोक्त संरचना का उपयोग करते हैं तो पाइपर-व्हिसल अतिरिक्त सुविधाएँ प्रदान करता है, अब हम piper_whistle speak "This is quite neat"
के माध्यम से भाषण उत्पन्न कर सकते हैं। X11 वाले सिस्टम पर आप piper_whistle speak "$(xsel --clipboard --output)"
के माध्यम से अपने क्लिपबोर्ड में टेक्स्ट का बोला हुआ संस्करण उत्पन्न कर सकते हैं।