Welcome to the Serenade docs! Here, you'll find an overview of everything Serenade can do, along with examples. First, let's get Serenade installed on your device.
First, download and install Serenade. Serenade supports macOS, Windows, and Linux—platform-specific installation instructions can be found on the download page.
After installing Serenade, you'll be prompted to activate the app via an email link. If that link doesn't work, you can use the code provided on the activation page to activate manually.
The Serenade application will help you install the extension from the Chrome Web Store.
Serenade floats above all your other windows, so you can keep it side-by-side with other applications, like your code editor. You can toggle Serenade by clicking the Listening switch or pressing Alt+Space. Then, as you speak, you'll see a list of transcripts in the Serenade window.
Sometimes, Serenade isn't sure what you said, so you'll see a few different options. The first one will be used automatically, but to use a different option (and undo the first one), just say the number you want to use instead. For instance, to use the second option, just say two. If none of the options are right, you can just say undo.
As you'll see, many Serenade commands take the same form: an action followed by a selector. An action is something you want to do to code, like a add, change, or delete. A selector is a block of code to operate on, like line, word, function, or class. To quickly reference common actions and selectors, check out the Reference section.
Throughout the documentation, you'll see blocks that look like this:
(insert | type) [above | below] <text>
Good morning, ""
Good morning, "sunshine"
Text in <angle brackets> is free-form text, like the name of a function or variable.
Text separated by pipes, like (foo | bar), represents a list of choices (i.e., an or).
Text in [square brackets] is optional.
Serenade supports different commnads depending on which application is currently in the foreground (i.e., focused). At the bottom-left of the Serenade window, you can see which application is currently active, along with an icon indicating which commands are available. Here the various modes Serenade can be in when using Chrome:
When Chrome is in focus and the extension is connected, commands on this page will be available.
When another app is in focus, Serenade can still type raw text and run system commands.
The automatic reminder can be turned off in "Settings > Editor > Active app reminder", and it will always be available when the active app indicator is hovered over.
With commands like open stack overflow, click search, and back, you can quickly navigate web pages with voice.
Navigate to a page or perform a search
(open | go to) <text>
Navigate back or forward
back | forward
Reload the current page
Click an element matching specific text
Scroll in a direction
scroll (up | down | left | right)
Scroll to text
scroll to <text>
Serenade can also show numbered overlays over various page elements, so it's easier to click links, focus inputs, and more. To show numbered overlays, say a show command, like show links or show code. Then, just say the number of the element you want.
show links will show links that can be clicked.
show inputs will show input fields, including contenteditable fields, that you can type to.
show code will show <code> and <pre> elements that can be copied.
Show a numbered overlay for links, inputs, or code
show (links | inputs | code)
Select a numbered overlay
one | two ...
Remove all overlays
You can manage your browser tabs with commands like new tab and previous tab.
Create a new tab
Close the current tab
Switch to the next or previous tab
(next | previous) tab
Switch to a specific tab
tab (one | two | three ...)
Switch to a specific tab
(first | second | ...) tab
With the insert command, you can dictate text into websites like Gmail and Stack Overflow.
(insert | type) [above | below] <text>
insert hello world
type camel case foo bar
type below world
The dictate command inserts text, but doesn't convert coding symbols to their equivalents. This can be useful for writing comments or docs, rather than code.
dictate a plus b greater than not c
a plus b greater than not c
In this section, we'll take a look at voice commands you can use for editing. You can use the delete command to remove text and the change command to change text to something else. Serenade also supports common operations like copy, cut, and paste.
You can delete text with the delete command.
delete two words
I think Serenade is great
Serenade is great
Are you free now?
Are you free?
The change command selects the nearest match to the cursor and replaces it with some text.
change <text> to <text>
change word to goodbye
change people to dogs
I like all people
I like all dogs
You can use commands likecopy, cut, andpaste to manipulate text.
(copy | cut) <text>
copy next two words
copy lines fifty to sixty
Pasting code from the clipboard
paste [above | below | inline]
Symbols & Formatting
You can also specify symbols and formatting when you're dictating text.
To format text using camel case, underscores, etc., you can prefix any text with a style:
camel, camel case
pascal, pascal case
underscores / snake
Creating text with formatting
insert <formatting> <text>
insert camel case my balance equals all caps starting balance plus one
myBalance = STARTING_BALANCE + 1
You can also style existing text by describing a style, followed by a selector to change:
You can include symbols when speaking any insert command. Here's a list of all of the symbols supported by Serenade.
slash, divided by
less than or equal to
greater than or equal to
quote, double quote
Enclosure symbols can be used to wrap text. You can also dictate opening and closing enclosure symbols separately. Here's a list of all of the enclosure symbols supported by Serenade:
comparators, angle brackets
You can use enclosure symbols in any insert command.
Creating text with enclosures
insert <enclosure> <text>
insert f of x
add greeting equals string name
greeting = "name"
insert value equals values brackets zero
value = values
If you need to use the literal text representation of a symbol (e.g., the word dash rather than the - character, you can escape it in a few ways:
(insert | type) (escape | the word) <symbol>
insert escape plus
Serenade doesn't just work for applications that have a native Serenade plugin—you can control any application with voice using Serenade. No matter what application you're using, you can use commands like insert to insert text, press to press keys (to trigger shortcuts), and focus to switch apps.
With commands like focus, launch, and close, you can quickly switch, open, and close apps with voice.
Bring an application to the foreground
Launch an application
Close an application
Switching among windows of the current app (macOS only)
(pause | stop listening)
Inside of any application, you can use the press command to press combinations of keyboard keys—handy for triggering keyboard shortcuts—or the insert command to dictate text.
Press a key combination
press control tab
press command k
Type a string
(insert | type) <text>
insert g mail dot com
(new | close | next | previous) tab
Trigger an undo or redo
(undo | redo)
Copy and paste text
(cut | copy | paste)
Type a string and press enter
Trigger a mouse click
[left | right | middle] <click>
Tips and Tricks
Instead of worrying about spacing while writing code, use style file once your code is in a reasonable state, and Serenade will automatically format the entire file.
Long insert or add commands can be less accurate than shorter commands. If you're seeing low accuracy, try breaking up longer commands into smaller, separate commands.
The insert and add commands are similar, but have distinct use cases—add works best for writing new lines of code, including larger constructs like functions or classes, while insert works best for inserting or appending text to an existing line.
Make sure your system's microphone volume is set to the right level. We've found that around 80%, to make sure the input isn't too loud or too quiet, works best, but try moving it around if Serenade's results aren't accurate.
When using Serenade, try to speak conversationally, as though you were pair programming with someone seated next to you. Over-enunciating words can actually make Serenade less accurate!
If Serenade doesn't know a word, like numpy, you can spell it in a command, as with add import n u m p y.
What macOS permissions does Serenade use?
When Serenade accesses certain features on macOS for the first time, macOS will ask you to grant permission to them. If you've accidentally denied permissions or something is not working as expected, you can check that the proper permissions have been granted.
To find each of these permissions, first open System Preferences, then Security & Privacy, and finally the Privacy tab.
Accessibility: Serenade uses this permission to focus windows for you.
Automation: Serenade uses this permission to press keys for you.
Microphone: Serenade uses this permission to capture speech audio.
What data does Serenade collect?
When you use Serenade Cloud, your audio is streamed to Serenade's cloud-hosted speech-to-code engine and used to improve our models. Source code transformations also happen in our cloud, but we do not save any data from your source code.
When you use Serenade Pro, no audio or source code data is sent to Serenade's servers unless you opt-into sharing audio data to help improve our speech-to-code engine.
How do I fix a "Language not supported" error?
Double-check that your editor has the Serenade plugin installed, and the active file has the correct file extension for the language you're trying to use.
This error could also mean that we don't yet support the code transformation for the language you're using.