Voice_Commands
A customizable Voice Assistant that supports installable custom commands/functions via Voice Command Loader (.vcl) files. Users can extend its functionality by creating their own commands using JavaScript and distributing them through .vcl files.Features
Screenshots
- Custom Installable Commands: Install your custom commands through .vcl files or manual code typing directly from the app's interface, allowing for endless possibilities.
- Command Uninstallation: Easily uninstall the unnecessary commands directly from the app's interface, keeping your voice assistant organized and mess-free.
- JavaScript Support: You can create custom commands using native JavaScript and using Tasker's JavaScript interface for seamless command developments.
- Cross-Platform Development: You can develop commands on desktop or directly on the smartphone using code editors.
- VCL Exporter Tool: Export your command code into .vcl files using the built-in VCL Exporter tool for smoothing the development process.
- Custom .VCL Installer: By default it has Voice-Command-Loader (.vcl) installer written by me (N Paul), but you can use your own .vcl installers for command installation and management.
- VCSL (Voice Commands Support Library): You can use VCSL's custom interface-related functions to simplify command programming and enhance the command development efficiency.
- Custom VCSL (Voice Commands Support Library) Support: By default it has VCSL written by me (N Paul), but you can use your own VCSL implementations to further extend the platform's capabilities.
- Custom Keywords: You can change the keywords for launching commands, making voice interactions more personalized.
- Custom Command Launcher: By default, it uses VC_Engine command launcher developed by me (N Paul) to execute other commands. However, you can replace this with your own command launcher if needed.
- Multi-Event Triggering: Execute commands based on various events
- Assistant Listener Service Event: Execute your assigned commands (by default VC_Engine command) when assistant request event was occured.
- Phone Ringing Listener Service Event: Execute your assigned commands (by default Phone Ringing command) when a phone call is ongoing.
- Missed Call Listener Service Event: Execute your assigned commands (by default Missed Call command) when a missed call is detected.
- Cancel Keywords: Cancel command execution using predefined cancel keywords, ensuring seamless voice interactions.
- Custom Cancel Keywords: Define custom cancel keywords to align with your specific needs and preferences.
- TTS Customization: Personalize your Voice Commands experience by changing the Text-to-Speech (TTS) settings.
- Built-in Commands: Voice Commands has 15 built-in commands, including:
- VC_Engine: Launch another commands using appropriate keywords.
- Clock & Calendar Command: Retrieve current time and date information.
- Calculator Command: Evaluate simple math expressions.
- Call_Cmd: Initiate calls to specific phone numbers using voice commands.
- Auto Call Pickup: Automatically pick up incoming calls.
- Auto Call Terminate: Automatically terminate incoming calls.
- Call_Back: Retrieve information about the last dialed or received caller and initiate a call back.
- Phone Ringing Command: Retrieve information about incoming calls.
- Missed Call Command: Retrieve information about missed calls.
- Repeat Command: Test voice input and output functionality.
- Wikipedia Command: Retrieve information from Wikipedia using voice commands.
- VCSL_Info: Retrieve information about the installed Voice Commands Support Library.
- Battery Command: Retrieve battery level information.
- Bluetooth Battery Command: Retrieve battery level information for connected Bluetooth devices.
- Random Fact Command: Retrieve random facts from uselessfacts API.
Here are some screenshots:
ICON:
Select a valid .vcl file from the file
browser to install a command:
Command Installation (manual):
Installation Successful:
Tap a command for editing its keyword(s):
Settings:
Advance Settings:
Using: Calculator Command
Using: Wikipedia Command
About Source Project
This application is made with Tasker and with Tasker app factory. To install and run the Voice Commands (apk format) you will not need any of these applications. However, if you want to view , modify or directly run the source project file you will need Tasker application and if you want to export your own modification then you will need both Tasker and its extension app Tasker app factory.Installation and Usage
You can run Voice Commands using two methods:Command Developments
- Method 1: Android App (apk) Installation:
- Download the Voice Commands APK file.
- Install the APK file on your Android device. (If you encounter issues during installation, use a 3rd-party app installer tool like SAI Split APKs Installer to install the APK file)
- Launch the Voice Commands app
- Method 2: Directly run the project in Tasker:
- Install the Tasker app from the Google Play Store.
- Download the Voice Commands project file (Source Project/Voice_Commands.prj.xml)
- Import the project file into Tasker.
- Run the Launcher task from Tasker.
You can develop your own commands using JavaScript and using Tasker's JavaScript interface. To create your own Command, follow these steps:Create a new Voice Command Support Library object
- Write your codes: Use any code editor to write the JavaScript code for your command.
- Copy the code: Copy the entire JavaScript code from the code editor.
- Use VCL Exporter: Open VCL_Exporter.html (Tools/VCL_Exporter.html) in browser (recommended browser is chrome) and paste the copied code.
- Export as .vcl file: Use the tool to wrap the JavaScript code into a Voice Command Loader (.vcl) file.
To create a new Voice Command Support Library object use new VCSL() keywordsFor getting raw user queries data
Code (Javascript):// For Creation of a new Voice Command Support Library object
const VC_apis = new VCSL();
For getting raw user queries data use userQueries property of the VC_OInfos global objectFor getting the matching keyword value from the raw user queries data
Code (Javascript):// For getting user queries (user 's raw command such as "calculate 4585 + 4565") data from the global property VC_OInfos.
let userQueries = VC_OInfos.userQueries;
For getting the matching keyword value from the raw user queries data use matchedKey property of the VC_OInfos global objectFor getting the only expression portion from the userQueries string
Code (Javascript):// For getting the key value (by which this command is called e.g. "calculate") from the global property VC_OInfos.
let matchedKey = VC_OInfos.matchedKey;
For getting the only expression portion from the raw user queries data, we can subtract matchedKey from the userQueriesFor getting voice input
Code (Javascript):// For getting the only expression portion from the userQueries string , we subtract matchedKey from the userQueries
let expression = userQueries.slice(matchedKey.length);
For getting voice input use .getVoice() method of the VCSLFor saying some text
Code (Javascript)://For getting the text from speech recognizer and storing it into voice_input variable
let voice_input = VC_apis.getVoice();
For saying some text use .say() method of the VCSLTo implement the multiple options, use the .options() method of the VCSL.
Code (Javascript)://Our sample text
let someText = `This is sample text`;
//For saying
VC_apis.say(someText);
Here is a comprehensive API reference for Command Development for Voice Commands:Code (Javascript):const options = ["Hot/Cold","Day/Night","On/Off","Big/Small","Fast/Slow","Left/Right","Up/Down","Yes/No","Red/Green/Blue","Small/Medium/Large","Happy/Sad", "Old/New",
"High/Low","Easy/Hard","Light/Dark","Simple/Complex","Quiet/Loud","Clean/Dirty","Full/Empty","Open/Closed","True/False","Morning/Afternoon","Summer/Winter","Digital/Analog",
"Automatic/Manual"]; //Samples randoms options for Voice Command 's Options API preview
VC_apis.say(`Select a random option by saying the corresponding option number`); //For saying the text
let selectedOptn = VC_apis.options(...options); //For interacting with our random options and store the selected option value in to selectedOptn variable
VC_apis.say(`You selected the ${selectedOptn} option`); //For saying the selected option
Example Command: Data Structure of the Calculator Command
- new VCSL() For Creation of a new Voice Command Support Library object
- VC_OInfos.userQueries For getting raw user queries data
- VC_OInfos.matchedKey For getting the matching keyword value
- VC_OInfos.userQueries.slice((VC_OInfos.matchedKey).length) For getting the only expression portion from the raw user queries data
- .pitch_value For getting TTS pitch setting value
- .speed_value For getting TTS speed setting value
- .max_options_value For getting maximum option setting value
- .visual_feedback For getting the visual feedback status (either 'on' or 'off')
- .voice_language For getting TTS language value.
- .stop_key For getting stop key value.
- .info For getting information about currently installed VCSL
- .customToast(toastMsg) For visually output some message
- .performTaskWait(taskName, checkingInterval, maxWait)
For performing Tasker 's task and wait for its completion Unlike native performTask(), which executes a Tasker task from JavaScript without waiting, performTaskWait() ensures the task is finished before proceeding.
checkingInterval: In which interval should the check to be done to see if the task has finished or not. Increasing the interval period reduces system resource usage, while decreasing the interval period increases system resource usage.
maxWait: Maximum wait time in milliseconds. If this timeout is exceeded, the function will stop waiting and continue executing the next code (except for 0 timeout). There are two types of values for max_timeout: (a) 0: Waits indefinitely until the task is completed. (b) Non-zero value: Waits for a maximum of the specified time (in ms).
- .say(text) For saying output
- .getVoice() For getting voice input and return the text
- .options(...alternatives) For providing Voice Commands 's options interface
- .arrayConverter(tasker_Array) For Converting Tasker 's array into JavaScript 's array format
- .vclParser(vclData) For converting vcl data into JS object
- .formatDate(dateStr) For formatting default date string format (e.g. 10-02-2025) into more readable / audible date format (e.g 10 February 2025)
- .formatTime(timeStr) For formatting the default time string format (e.g. 17.45) into more readable / audible time format (e.g 5:45 PM)
Code (Text):<vcl>
<Name>Calculator Command</Name>
<Version>v1.0.0</Version>
<Author>nirmalpaul383</Author>
<Description>A simple calculator command for evaluating simple math expressions (e.g "calculate 22 +358")</Description>
<Keywords>calculate, calculator, math expression</Keywords>
<Codes><![CDATA[
// Calculator command is for evaluating simple math expressions
// This project is originally made by me (N Paul) (https://github.com/nirmalpaul383). You can download
// source files from my github profile https://github.com/nirmalpaul383 .
// My YouTube Page: https://www.youtube.com/channel/UCY6JY8bTlR7hZEvhy6Pldxg/
// FaceBook Page: https://www.facebook.com/a.New.Way.Technical/
// GitHub Page: https://github.com/nirmalpaul383
//For Creation of a new Voice Command Support Library object
let VC_apis = new VCSL();
//For getting user queries (user 's raw command) data from the global property VC_OInfos. (e.g. "calculate 5 + 3 +24")
let userQueries = VC_OInfos.userQueries;
//For getting the key value (by which this command is called) from the global property VC_OInfos. (e.g. "calculate")
let matchedKey = VC_OInfos.matchedKey;
//For getting the only math expression portion from the userQueries string , we subtract matchedKey from the userQueries.
//(e.g. userQueries: "calculate 5 + 3 +24" , then the mathExpression: "5 + 3 +24")
let mathExpression = userQueries.slice(matchedKey.length);
//For removing whitespace from both sides
mathExpression = mathExpression.trim();
//Function for evaluating math expression without using the eval() function
function evaluate(expression) {
return new Function('return ' + expression)();
};
let result = evaluate(mathExpression); //For evaluating math expression and storing it in to result variable
VC_apis.say(`The calculation answer is ${result}`); //For saying the calculation result
]]></Codes>
</vcl>
Thanks
If you like this project please give a star to this project
This project is originally made by me(N Paul). My github profile , My youtube page , facebook page
This is an open source program. You are welcomed to modify it...
Thank you for trying it out!

Voice_Commands v1.0.0
A customizable Voice Assistant that supports installable custom commands via .vcl files.