টার্মিনালের প্রতিটি কমান্ড আলাদা আলাদা বার্তা বা শব্দ দিয়ে স্বয়ংক্রিয়ভাবে শেষ করুন


21

আমি এসভিওক্স পিকো 2 ওয়েভ ইনস্টল করেছি এবং একটি স্ক্রিপ্ট তৈরি করেছি। এখন আমি যখন প্রবেশ করি:

speech "Hello world"

কম্পিউটার পাঠ্য থেকে ভয়েস ইঞ্জিন উচ্চস্বরে "হ্যালো ওয়ার্ল্ড" বলে says তদতিরিক্ত, আমি .bashrcভেরিয়েবল PROMPT_COMMANDহিসাবে সংজ্ঞায়িত হিসাবে ব্যবহার :

PROMPT_COMMAND="speech 'Command executed.'"

সুতরাং টেক্সট-টু-ভয়েস ইঞ্জিনটি আমাকে উচ্চস্বরে ঘোষণা করেছে যে টার্মিনালে প্রম্পটটি ফেরানোর আগে কমান্ডটি কার্যকর করা হয়েছে।

যাইহোক, এটি কিছুক্ষণ পরে বিরক্তিকর হয়ে ওঠে এবং আমি ভেবেছিলাম যে কম্পিউটারটি টার্মিনালের প্রতিটি কমান্ডের সাথে টেক্সটের একটি ভিন্ন লাইন (স্টারশিপ এন্টারপ্রাইজের স্বতঃপাইলট সম্পর্কে ভাবেন) কথা বলার সাথে সাথে এটি শেষ করতে সত্যিই শীতল হবে ।

সুতরাং আমি .bashrc এ একটি অ্যারে ভেরিয়েবল তৈরি করেছি, বিভিন্ন বার্তা সহ:

array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."

আমি যা চাই তা হ'ল প্রতিবার টার্মিনালে কমান্ড চালানোর সময় ভেরিয়েবলটি PROMPT_COMMANDআপডেট হতে হবে এবং অ্যারেতে একটি ভিন্ন এলোমেলো লাইন পড়তে হবে ।

আমি ধারণা করছি আমার একটি লুপ দরকার, তবে এটি কীভাবে তৈরি করা যায় তা আমি জানতাম না।

আমি কোন সাহায্যের জন্য সবচেয়ে কৃতজ্ঞ হবে। ধন্যবাদ.


লিঙ্কযুক্ত উত্তরের স্ক্রিপ্টে, নিশ্চিত করুন যে আপনি নিজের -l=de-DEস্থানীয় ভাষায় এটি পরিবর্তন করেছেন -l=en-US
টেরেন্স

ধন্যবাদ প্রকৃতপক্ষে. এটির যত্ন নেওয়া দরকার, তবে আমি এটি করেছিলাম।
রাজ্জাজ

হ্যাঁ, এটি সাধারণভাবে একটি মন্তব্য। এখানে খুব সুন্দর ধারণা! +1
স্থল

শুধু কৌতূহলী - আমি speechএক্সিকিউটেবল ইনস্টল করতে পারি ? এটি কি জন্য উপনাম espeak?
N0rbert

1
"বক্তৃতা" একটি লিপি is আমি লিঙ্কে নির্দেশাবলী অনুসরণ করে। টেরেন্স দ্বারা উপরে উল্লিখিত সংশোধনগুলি সহ আমি স্পিচ.শ নামে একটি স্ক্রিপ্ট তৈরি করেছি "। আমি আমার sc / স্ক্রিপ্টস ফোল্ডারে স্পিচ.শ সংরক্ষণ করেছিলাম exec স্পিচ.শকে ফাইলের অনুমতিগুলি পরিবর্তন করেছিলাম এটি কার্যকর করার জন্য I আমি নিম্নলিখিত হিসাবে একটি ফোল্ডার তৈরি করেছি: ~ / স্ক্রিপ্ট / বিন এবং এখান থেকে নির্দেশাবলী অনুসরণ stackoverflow.com/a/20054809 তাই স্ক্রিপ্ট এক্সিকিউটেবল, সেটা ব্যাপার হিসাবে স্বীকৃত করা যাবে আমি কোথায়, পথে এটা যোগ করতে চাইলে।
RazTaz

উত্তর:


22

কোনও স্ক্রিপ্ট তৈরি করুন এবং এটি সংরক্ষণ speechকরুন যাতে আপনার অ্যারে থেকে একটি এলোমেলো লাইন এবং সেই লাইনে কলিং কমান্ড চয়ন করতে আপনার লাইন এবং যুক্তি রয়েছে :

array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."

line=${array[$RANDOM % ${#array[@]}]}
speech "$line"

তারপরে আপনার .bashrcবা .profileসেটে PROMPT_COMMAND:

PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"

শুধু প্রতিস্থাপন speechসঙ্গে echoভয়েস পরিবর্তে একটি messge জন্য।


উপরের সমাধানের জন্য ধন্যবাদ। এটি কাজ করে বলে মনে হচ্ছে কেবলমাত্র এটি এলোমেলো রেখায় প্রথম শব্দটি রেন্ডার করে (উদা। "শিল্ডস" বা "মোতায়েন ..") পুরো লাইনটি নয় (উদা। "90% শিল্ডস" বা "মেরামত ড্রয়েডগুলি ডিপ্লোয়িং করছে ডেক 17. "
রাজতাজ

@ রাজতাজ আপনাকে স্বাগতম;)
রাভেক্সিনা

${array[$RANDOM % ${#array[@]}]}ডাবল উক্তি থাকা উচিত নয় ?
ম্যাড পদার্থবিদ

@ ম্যাডফিসিসিস্ট এটি একটি ভাল অনুশীলন তবে এখানে প্রয়োজনীয় নয়, set -xআমি কী বলছি তা ব্যবহার করে স্ক্রিপ্টটি চালান :)
রাভেক্সিনা

4

পরে টিউটোরিয়াল সম্পাদনা করুন:

উপরের রাভেক্সিনার উত্তরের জন্য ধন্যবাদ, এখন সমস্যাটি সমাধান হয়েছে এবং সমাধানটি দুর্দান্তভাবে কাজ করে। উবুন্টু 18.04 এ এটির কাজ করতে আগ্রহী অন্যান্য ব্যক্তিদের জন্য আমি নীচে ধাপে ধাপে নির্দেশনা দেব

1. এসভিওক্স পিকো 2 ওয়েভ প্যাকেজ ইনস্টল করুন:

sudo apt-get install libttspico0 libttspico-utils libttspico-data libsox-fmt-mp3

২. স্পিচ স্ক্রিপ্ট তৈরি করুন

cd ~/scripts
gedit speech

এবং সঠিক সামগ্রীটি প্রবেশের পথে প্রবেশ করে, এই সামগ্রীটি ভিতরে প্রবেশ করান:

#!/bin/bash
pico2wave -l=en-US -w=/home/user/test.wav "$1"
aplay -q ~/test.wav
rm /home/user/test.wav

সংরক্ষণ করুন এবং প্রস্থান.

৩. উপরের রাভেক্সিনা নির্দেশিত শেল_স্পেক.শ স্ক্রিপ্টটি তৈরি করুন:

gedit shell_speech
array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."

line=${array[$RANDOM % ${#array[@]}]}
speech "$line"

সংরক্ষণ করুন এবং প্রস্থান.

৪. স্ক্রিপ্টগুলি সম্পাদনযোগ্য করে নিন এবং তাদের ডিরেক্টরিটি PATH এ যুক্ত করুন যাতে সেগুলি যে কোনও জায়গা থেকে ডাকতে পারে:

chmod u+x ~/scripts/bin/speech
chmod u+x ~/scripts/bin/shell_speech
export PATH=$PATH:~/scripts

5. .bashrc পরিবর্তন করুন

gedit ~/.bashrc

নিম্নলিখিত লাইন যুক্ত করুন:

PROMPT_COMMAND="bash shell_speech"

সংরক্ষণ করেন এবং বন্ধ করেন

দ্রষ্টব্য: আপনি অ্যারেটিতে যত খুশি নতুন লাইন যুক্ত করতে পারেন~/scripts/bin/shell_speech


যেহেতু আপনি স্ক্রিপ্ট এক্সিকিউটেবল এবং তৈরি করেছি PATH, আপনি অন্তর্ভুক্ত করা প্রয়োজন হবে না bashআপনার PROMPT_COMMAND, আর আমি ক্ষেত্রে একক উদ্ধৃতি চিহ্ন ব্যবহার আপনি অন্যান্য জিনিস যোগ হবে পরে ডেফার্ড মৃত্যুদন্ড আছে প্রয়োজন হবেPROMPT_COMMAND='shell_speech'
বিরাম দেওয়া পর্যন্ত পরবর্তী ঘোষণা।

1
সুরক্ষার কারণে সাধারণের /bin/bashপরিবর্তে লেখাই bashভাল ... (কেউ যদি আপনার পথে অন্য কোনও বাশকে আগে রাখে তবে ভাল অনুশীলন /bin...)। আমি এমনকি আপনি যদি একটি সুপারিশ উচিত টেম্প র্যান্ডম ফাইল মধ্যে /tmpডিরেক্টরি বদলে test.wavআপনার বাড়ি ... PS> এটি একটি বর্ণন দিতে ভাগ্য
হাস্তুর

@ হাস্তুর এক মিনিটের জন্য ভাবুন যে পরিস্থিতিতে আপনার অনুমানটি সত্য হয়ে উঠতে পারে (অর্থাত "কেউ আপনার পথে / বিনের আগে আরেকটি ধাক্কা দেয়")। এটি কেবল তখনই সম্ভব যখন কারও কাছে আপনার কম্পিউটারে শারীরিক অ্যাক্সেস রয়েছে এবং / অথবা ইতিমধ্যে সুবিধাগুলি বাড়িয়েছে। উভয় পরিস্থিতিতেই আপনার সমাধান সমস্যার সমাধান করছে না।
রাজটাজ

@ রাজতাজ ওয়ার্ল্ড রঙে পূর্ণ, কেবল কালো এবং সাদা নয় ! :-)। দুর্ভাগ্যক্রমে একটি সিস্টেমে আংশিক সুবিধাগুলি থাকার অনেকগুলি উপায় রয়েছে এবং কেবলমাত্র ব্যবহার করা bashআরও অর্জন করার উপায়। লিঙ্ক, স্ক্রিপ্ট, মুক্ত ডিরেক্টরিতে অনুমতি লিখুন, ভাগ করা আছে ... তাছাড়া - আপনি এটি মিস করতে পারেন - স্ক্রিপ্টগুলি তাদের প্রথম লক্ষ্য বা মালিকের কাছে টিকে থাকতে পারে ... এবং আপনি (বা অন্য কেউ) পর্যাপ্ত সময়ের পরে এগুলি ব্যবহার করতে পারেন আপনি বিভিন্ন অবস্থার অধীনে ভিতরে লিখিত সমস্ত আদেশ (আমরা তার জন্য করব) মনে রাখবেন না। লাগাতে \bin\bashস্পষ্ট পাথ দিয়ে হয় একটি ভাল অনুশীলন। এটি এড়াতে ... ঝুঁকিপূর্ণ।
হাস্তুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.