Mozilla has realigned its priorities, and Firefox Voice will no longer be supported by Mozilla. The Firefox Voice team will be going to new things, no longer with Mozilla. This has been a fun and exciting project and we appreciate all the contributions and ideas we’ve received from the community.
The repository will remain here, but archived. We believe the extension will be available for a few months but expect it will be removed from addons.mozilla.org eventually.
Thanks from the team – Ian Bicking, Julia Cambre, Jofish Kaye, Daniela Mormocea, Chioma Onyekpere, Afsaneh Razi, Janice Tsai, Abraham Wallin.
Firefox Voice was an experiment from Mozilla Emerging Technologies.
Firefox Voice is a browser extension that allows you to give voice commands to your browser, such as "What is the weather?" or "Find the gmail tab". Initially, the goal is to provide any useful interactions. Ultimately, the goal is to see if we can facilitate meaningful user interactions with the web using just voice-based interactions.
Check out these videos:
Launcher is located in the top right corner of the browser window having mic icon, as shown below.
Launcher contains 2 input modes :
Voice: You can give voice commands to your browser if the popup is open and listening.
Text: You can paste text or start typing the command when the popup is open. An input box and Go button appears when you start typing.
How it works: Demo video
If you have a bug or idea you want to develop, you can open a new issue in this repository. You can also submit feedback using this feedback form. We are very interested in any feedback you have about using this tool!
If you'd like to discuss the tool, development, or contributions, we are in the firefox-voice
channel on chat.mozilla.org (direct link to channel). Note that the team mostly works weekdays, North American work hours, so you may experience a delay in response.
To setup your local development environment, read the installation instructions here
There is some documentation in the docs/ directory, notably writing an intent.
By default messaging-related logging messages aren't shown, you can turn logging up slightly with $LOG_LEVEL=messaging
(or like LOG_LEVEL=messaging npm start
).
Any changes you make should cause any .jsx files to be recompiled and the extension will be reloaded.
After the project successfully starts, firefox will be automatically opened along with a console window. The console window consoles various kind of information.
The following errors or warnings should not concern you as these are not related to our project. So these can be ignored:
You will probably see manifest warnings of the format:
<long number> addons.webextension.doh-rollout@mozilla.org WARN Loading extension 'doh-rollout@mozilla.org': Reading manifest: Invalid extension permission: networkStatus
You may face errors on performing npm install
that can be resolved by updating the node to its latest version see here
If a new browser does not open, it might be because the path to Nightly is not found. Use the command FIREFOX="/usr/bin/firefox" npm start
instead.
By default this will use Firefox Nightly, but you can override this with the environmental variable $FIREFOX
(you can point it to a release version, but some things may not work; also you can use a localized Firefox or an unbranded Firefox). You can also set $PROFILE
to a directory where the profile information is kept (it defaults to ./Profile/
).
npm test
.
This command does the following:
firefox-voice
makes use of jest
, it has been excluded from continuous integration (CI) because CI couldn't handle the module rewrites.npm test
runs npm run jest
locally on node v13.8.0
in the development process.jest
unit tests can be added because npm test
still runs jest
locally. For examples to guide you, refer to files with the .test.js
extension.npm run test:selenium
runs Selenium tests.npm run lint:fix
.
In order to keep the firefox-voice
codebase healthy and running properly, these tools are used:
In Firefox Voice there are several separate processes where things run (see also Anatomy of an extension):
about:debugging
document.extension/popup/
) and handles some of the initial lifecycle of invoking an intent. In most ways it is a normal page, but it runs in the short-lived popup. See the next section for a technique to debug this.The most reliable way to debug these is with the Browser Console, which should open automatically, or you can open with Tools > Web Developer > Browser Console. You should change the settings on the console using the gear icon in the upper-right, and turn on Show Content Messages (otherwise logging from the popup and some of these other sources will not be displayed). This setting should persist.
The popup can be hard to debug, since it disappears and there's no debugging tools. But the popup can also run in a tab. The easiest way to do this is to run:
OPEN_POPUP_ON_START=1 npm start
This will open the popup in a tab and reopen it whenever the extension restarts. Reloading the tab is equivalent to reopening the popup.
Please see Writing An Intent.
It's possible to install and use in-development versions of the extension. Every commit to master
is built into the dev build, and when we prepare for a release and merge to stage
is used to create the stage build.
NOTE THAT THESE VERSIONS INCLUDE EXTRA DATA COLLECTION
We are using these builds for internal testing with more-than-normal data collection. We have not yet implemented data collection controls.
about:config
and set extensions.experiments.enabled
to true)The version numbers are increased for each release and each commit, but are not sequential.
There is an index of intents (commands) that is viewable if you open the panel, click on the gear/settings, and follow the "Intent Viewer" link.
This is very experimental, but to develop for Firefox for Android, install Firefox (release) on your Android device.
To try, run:
npm run start-android
You may see an error message Android device ... was not found in list: ["99EAP164UC"]
: if so, then 99EAP164UC (for example) is your Android device name. Try again:
export ANDROID_DEVICE=99EAP164UC
npm run start-android
You might have to install adb
and enable some permissions as well. For more instructions, please refer to the console.
For some more information:
See the guidelines for contributing to this project.
This project is governed by a Code Of Conduct.
To disclose any potential security vulnerability please see our security documentation.
Wakeword provided by the Howl Project: Jaejun Lee, Ralph Tang, Jimmy Lin, University of Waterloo.
Made with contributors-img.
This module is licensed under the Mozilla Public License, version 2.0.