আমি পকেটসফিনেক্স_সামত এবং একটি $ 4 সাউন্ড কার্ড নিয়ে গিয়েছিলাম ।
মাইকে ইনপুট ভলিউমটি হ্যান্ডেল করতে আমি অ্যামিক্সার ব্যবহার করে স্পিচ সিন্থ ব্যবহার করার সময় এটি শুনতে বন্ধ করা দরকার এই বিষয়টি পরিচালনা করার জন্য (স্টপ-স্টার্টিং ইঞ্জিনটি দরিদ্র স্বীকৃতিতে ফলস্বরূপ সিএমইউ দ্বারা এটি সর্বোত্তম অনুশীলনের প্রস্তাব দেওয়া হয়েছিল)
echo "SETTING MIC IN TO 15 (94%)" >> ./audio.log
amixer -c 1 set Mic 15 unmute 2>&1 >/dev/null
যখন বক্তৃতা সিন্থটি বাজায় শ্রবণশক্তিগুলিকে নিঃশব্দ করার জন্য একটি মেলানো কমান্ড সহ
FILE: mute.sh
#!/bin/sh
sleep $1;
amixer -c 1 set Mic 0 unmute >/dev/null 2>&1 ;
echo "** MIC OFF **" >> /home/pi/PIXIE/audio.log
নিঃশব্দ করার জন্য সঠিক সময় গণনা করতে আমি কেবল লুয়ার মাধ্যমে soxi চালাই এবং তারপরে শুরু থেকে "x" সেকেন্ড চালানোর জন্য আনমুট.শ (নিঃশব্দের বিপরীতে) সেট করি। এটি পরিচালনা করার কোনও উপায় নেই সন্দেহ নেই। আমি এই পদ্ধতির ফলাফল নিয়ে খুশি।
লুয়া স্নিপেট:
-- Begin parallel timing
-- MUTE UNTIL THE SOUNDCARD FREES UP
-- "filename" is a fully qualified path to a wav file
-- outputted by voice synth in previous operation
-- GET THE LENGTH
local sample_length = io.popen('soxi -D '..filename);
local total_length = sample_length:read("*a");
clean_length = string.gsub(total_length, "\n", "") +1;
sample_length:close();
-- EXAMPLE LOGGING OUTPUT...
--os.execute( 'echo LENGTH WAS "'.. clean_length .. '" Seconds >> ./audio.log');
-- we are about to play something...
-- MUTE, then schedule UNMUTE.sh in x seconds, then play synth output
-- (have unrolled mute.sh here for clarity)
os.execute( 'amixer -c 1 set Mic '..mic_level..' unmute 2>&1 >/dev/null ');
os.execute( 'echo "** MIC OFF **" >> ./audio.log ');
-- EXAMPLE LOGGING OUTPUT...
-- os.execute( 'echo PLAYING: "'.. filename..'" circa ' .. clean_length .. ' Seconds >> ./audio.log ');
os.execute( './unmute.sh "'.. clean_length ..'" &');
-- THEN PLAY THE THING WHILE THE OTHER PROCESS IS SLEEPING
os.execute( './sounds-uncached.sh '..filename..' 21000')
আমি যে পাই ব্যবহার করি তা প্রকৃতপক্ষে ভয়েস দখল করতে:
pocketsphinx_continuous -bestpath 0 -adcdev plughw:1 -samprate 20000 \
-nfft 512 -ds2 -topn2 -maxwpf 5 -kdtreefn 3000 -kdmaxdepth 7 -kdmaxbbi 15 \
-pl_window 10 -lm ./LANGUAGE/0892-min.lm -dict ./LANGUAGE/0892-min.dic 2>&1 \
| tee -i 2>/dev/null >( sed -u -n -e 's/^.\{9\}: //p' ) \
>( sed -u -n -e 's/^READY//p' \
-e 's/^Listening//p' -e 's/^FATAL_ERROR: \"continuous\.c\"\, //p') \
> /dev/null
আবার, অন্যান্য উপায় আছে তবে আমি আমার আউটপুটটি এইভাবে পছন্দ করি।
সংশ্লেষের জন্য আমি সিপস্ট্রালগুলি পল দ্রবণগুলি নতুনভাবে ব্যবহার করেছি, তবে এটি অনলাইনে পাওয়া যায় না এটি কিনে দেওয়ার ব্যবস্থা করার জন্য আপনাকে সরাসরি তাদের সাথে যোগাযোগ করতে হবে এবং এটি কিনতে প্রায় 30 ডলার। ফলাফল গ্রহণযোগ্য তবে বক্তৃতাটি কিছু নোংরা ক্লিক এবং পপ তৈরি করে, সংস্থাগুলি জবাব দিয়েছে যে তাদের আর আর রসপি নেই এবং পণ্যটির উন্নতি করতে ইচ্ছুক নয়। YMMV
"নিষ্ক্রিয়" থাকাকালীন ভয়েস স্বীকৃতি প্রায় 12% সিপিইউতে বসে এবং স্বীকৃতির একটি অংশ করার সময় সংক্ষেপে স্পাইক করে।
রেন্ডারিংয়ের সময় ভয়েস তৈরি প্রায় 50-80% এ স্পাইক করে।
প্লে / সোক্সের ওজন বেশ ভারী হয় তবে আমি যখন রেন্ডার ভয়েসগুলিতে খেলি তখন রিয়েল-টাইম এফেক্টগুলি প্রয়োগ করি;)
অপরিহার্য পরিষেবাগুলি বন্ধ করতে এবং পুরো সিএলআই মোডে চলার জন্য আমি যে গাইডটি পেয়েছি তা ব্যবহার করে পাই ভারী ভারী হয়ে যায়। 800mhz ওভার-ক্লকড (সবচেয়ে ছোট)।
স্কেলিং_গোভারর সেট: পারফরম্যান্স
যখন পুরোপুরি চলমান: এটি সরাসরি সূর্যের আলোতে প্রায় 50 ডিগ্রি সেন্টিগ্রেড এবং শেডে 38 ডিগ্রি সেন্টিগ্রেডে চলে। আমার হিট সিঙ্ক লাগানো আছে।
শেষ পয়েন্ট: আমি আসলে এই সমস্ত গিয়ারটি একটি দুর্দান্ত অতিরিক্ত হিসাবে "ইন্টারনেট চালিত" এআইয়ের বাইরে চালিয়ে যাচ্ছি।
পাই এই সমস্ত কিছুই নির্বিঘ্নে পরিচালনা করে, এবং রিয়েল-টাইমে কোনও নেটওয়র্ক অডিও প্লে করে এবং অন্য কোনও ইউনিক্স বাক্সে সম্পূর্ণ লুপ করা অডিও। প্রভৃতি
বৃহত স্পিচ সিপিইউ ওভারহেড বোঝা সামলানোর জন্য আমি এমডি 5সাম ভিত্তিক ক্যাচিং সিস্টেমটি প্রয়োগ করেছি যাতে একই উচ্চারণগুলি দু'বার রেন্ডার করা না হয়। (প্রায় 220 এমবি @ প্রায় 1000 ফাইলগুলি আমি এআই থেকে ফিরে ফিরে আসা উচ্চারণের 70% কভার করি) এটি সত্যই সামগ্রিকভাবে মোট সিপিইউ লোডকে নিচে আনতে সহায়তা করে।
প্রিসিসে এটি পুরোপুরি করণীয়। তবে ভয়েস স্বীকৃতি কেবল আপনার মিক্স, আপনার ভাষার মডেল, আপনার বিষয়গুলির ভয়েসগুলি মূল উদ্দেশ্য দর্শকদের কাছে কীভাবে সুনির্দিষ্টভাবে বন্ধ করবে (আমি EN_UK বাচ্চাদের উপর একটি এন_ ইউএস মডেল ব্যবহার করি, নিখুঁত নয়) এবং বিশদটির অন্যান্য সংক্ষিপ্তকরণের মতোই হবে যে প্রচেষ্টা দিয়ে আপনি একটি শালীন ফলাফল নিচে whittle করতে পারেন।
এবং রেকর্ডের জন্য, আমি ইতিমধ্যে একটি কিন্ডলে একবার এই সমস্ত আগেই করেছি (এবং এটি সিএমও স্পিংক্স এবং ফ্লাইটের সাথে খুব বেশি কাজ করেছে)। আশাকরি এটা সাহায্য করবে.