Skip to content

Voice User Interface Design Guidelines

In a nutshell

Designing for voice is different from designing a screen: people speak to your skill in many different ways, and you can't show them buttons or menus to guide them. This page shares simple methods to plan, sketch, and test a skill idea before you start coding, so the finished result feels natural to talk to instead of something you have to learn. Think of it as drawing a conversation on paper first. New terms are explained in the Glossary.

Scope: voice interaction design

Applying principles of Voice User Interface Design helps you define and validate a skill's features before you start development. The methods below help plan, prototype, and test your skill during the early design stages.

This page is about designing the conversation: when to confirm, how much to say, how to phrase prompts. It is independent of any programming language. For the code-level practices that implement these ideas (which method to override, which API to call), see Skill Design Best Practices.

Credits: Voice User Interface Design Guidelines based on the original work of Derick Schweppe.

Interactions

Intents

Let's start with an example. A user in Melbourne, Australia might want to know about the weather. To ask for this information, they might say:

"Hey Mycroft, what's today's weather like?"

"Hey Mycroft, what's the weather like in Melbourne?"

"Hey Mycroft, weather"

Even though these are three different expressions, for most of us they probably have roughly the same meaning. In each case we would assume the user expects OVOS to respond with today's weather for their current location.

It is up us as Skill creators to teach OVOS the variety of ways that a user might express the same intent. This is a key part of the design process. It is the key difference between a Skill that kind of works if you know what to say, and a Skill that feels intuitive and natural to talk to.

This is handled by a pipeline plugin whose job it is to learn from your Skill what intents it can handle, and extract from the user's speech and key information that might be useful for your Skill. In this case it might include the specified date and location.

Statements and Questions

A Question asks the user for a response, while a Statement provides information to the user that does not need a follow-up response. For example a weather forecast like this would be considered a statement:

Today's forecast is sunny with a high of 60 and a low of 45.

Statements

For a lot of skills the conversation might end with a simple statement from OVOS, and no further action is necessary. Try to imagine what the user is trying to accomplish, if a simple statement gets the job done there is no reason to keep the conversation rolling, and in fact a follow-up might annoy the user with unnecessary interaction.

Questions

It may be tempting to always give users specific instructions like traditional automated phones systems \(Interactive Voice Response\). Many phone systems are notorious for being too verbose and difficult to follow.

With OVOS we're trying to break that mold and make the interaction natural. If you follow the phone system method you may be giving the user the exact phrasing to say, but you're also taking up valuable time and training them to think the system is very narrow in capability. If the user gives a response that your skill cannot handle, create follow-up questions that steer the user back on track.

Remember, there are no errors in a cooperative conversation.

Avoid

Speaker
Mycroft How many people are playing? For example, you can say 2 players.

Better

Speaker
Mycroft How many players?
User My Brother and Myself
Mycroft I'm sorry, what was the number of players?
User Two

In the first example the user is told explicitly what they can say, but the question is unnatural, we don't typically suggest responses to a conversation partner in real life. These long-winded questions can become tiresome if they are used repeatedly throughout the skill. Remember the phone system example, typically poorly designed automated phone systems inundate the user with many options and additional instructions at every step of the interaction.

In the second example we see a better question, although the user gives a response that is easy for a human to understand it is more difficult to design a skill to understand. Instead, the skill designer can ask the question again in a different way to steer the user back on track and doesn't require them to start the interaction over. In this case the follow-up question changes the wording slightly to make it clear that the user needs to say a number. The next time the user interacts with this Skill, they will likely say a number in their first interaction.

Determining whether to respond to the user with a statement or a question can be a bit tricky. When the user is somewhat vague it is tempting to assume the user's intent to speed along the interaction. Sometimes this is the right approach and sometimes it is not. If you are very confident in the user's input then it is alright to assume, and respond with a statement. For example in the Wikipedia Skill the Wikipedia API is used to confidently select the best response.

Wikipedia Skill

Speaker
User Tell me about Abraham Lincoln
Mycroft Abraham Lincoln was an American statesman and lawyer who served as the 16th president of the UnitedStates from 1861 to 1865. Lincoln led the nation through its greatest moral, constitutional, and political crisis in the American Civil War.

In contrast, let's look at an example of where a follow-up question is a better approach. You're working on a skill that gives important information about birds, such as wingspan, laden and unladen airspeed, etc..

Avoid

Speaker
User what is the airspeed velocity of an unladen swallow?
Mycroft The unladen airspeed of the european swallow is 20.1 miles per hour.

Better

Speaker
User What is the airspeed velocity of an unladen Swallow?
Mycroft What do you mean, African or European Swallow?
User European Swallow.
Mycroft The unladen airspeed of the European Swallow is 20.1 miles per hour.

In the first example Mycroft assumes the user is referring to the European Swallow, however there is nothing to give confidence to that assumption. In this case it's dangerous to assume the User meant the European Swallow since it is just as likely they meant the African Swallow. When there is no confidence in one answer versus another, OVOS should follow up with a question as demonstrated in the second example.

Another approach to solving this problem is to offer the most likely answer and inform the user that there are other answers available with a statement.

Confirmations

Confirmation approaches can also be defined by Statements or Questions, but when we talk about them in the context of confirmations we call them Implicit and Explicit.

Implicit Confirmation

This type of confirmation is also a statement. The idea is to parrot the information back to the user to confirm that it was correct, but not require additional input from the user. The implicit confirmation can be used in a majority of situations. For example Mycroft's Timer Skill uses implicit confirmation when creating new timers.

Timer Skill

Speaker
User Hey Mycroft set a timer for 5 minutes
Mycroft Alright, I'm starting a 5 minute timer

Avoid

Speaker
User Hey Mycroft, add bananas to my shopping list
Mycroft done

Better

Speaker
User Hey Mycroft, add bananas to my shopping list
Mycroft Adding bananas

Explicit Confirmation

This type of confirmation requires an input from the user to verify everything is correct. Only use explicit confirmation when needed as it can be tedious for the user to always confirm their input. This strategy is best when there are multiple steps, and it would be difficult to fix a misstep without starting over, or when deleting or modifying an existing multistep input.

Avoid

Speaker
User Hey Mycroft, set an alarm for 9:00 am tomorrow
Mycroft Ok, I've set an alarm for 9:00 am tomorrow, is that correct?
User Yes
Mycroft 9:00 am alarm set

Better

Speaker
User Hey Mycroft, set an alarm for 9:00 am tomorrow
Mycroft I've set an alarm for tomorrow at 9:00 am, 16 hours from now

The first example requires the user to confirm the alarm. Since the interaction is quite short it isn't necessary to use explicit confirmation.

Avoid

Speaker
User Hey Mycroft, set a calendar event for a meeting with Chris Stevens
Mycroft When is the event?
User Tomorrow at 11:00 am
Mycroft should I send an invite to Chris Stevens?
User Yes
Mycroft Alright, I've created a meeting for Tomorrow
Mycroft Alright, I've created a meeting for Tomorrow at 11:00 am with Chris Stevens
User Cancel my 11:00 am meeting tomorrow
Mycroft Done

Better

Speaker
User Hey Mycroft, set a calendar event for a meeting with Chris Stevens
Mycroft When is the event?
User Tomorrow at 11:00 am
Mycroft should I send an invite to Chris Stevens?
User Yes
Mycroft Alright, I've created a meeting for Tomorrow at 11:00 am with Chris Stevens
User Cancel my 11:00 am meeting tomorrow
Mycroft Are you sure you want to delete your meeting tomorrow at 11:00 am?
User Yes

Both examples use explicit and implicit confirmation correctly until the end of the interaction when the user wants to cancel the event. Unlike setting a simple timer or an alarm creating this calendar event requires multiple steps and would require reasonable effort to recreate. There may also be significant consequences if the request was misinterpreted and the meeting was canceled unintentionally.

Conversations

Any time the user needs to input a lot of information or the user needs to sort through a variety of options a conversation will be needed. Users may be used to systems that require them to separate input into different chunks. For example, many personal navigation devices \(GPS units\) require users to input the street number, street name, city, and state separately, like this:

Speaker
Navigation Device What is the street number
User 123
Navigation Device What is the street name
User Main Street
Navigation Device What is the city
User Springfield
Navigation Device Oregon

This was a limitation of the technology, both the STT and intent-matching pipeline plugin were not capable of handling an entire address. With OVOS you do not need to separate the address into multiple inputs. It's also easy to think like a traditional GUI and translate what are typically separate fields into questions for the user, but that will only slow down the interaction.

The best solution is to allow the user to input information both ways, all at once, or in pieces. For example the Alarm skill allows the user to set a complicated alarm all in one go, or in steps.

In Steps:

Speaker
User Hey Mycroft, set a recurring alarm
Mycroft For what day?
User weekdays
Mycroft For what time?
User 7 am
Mycroft I've set a recurring Alarm for 7 am on weekdays

All at once:

Speaker
User Hey Mycroft, set a recurring alarm for weekdays at 7 am
Mycroft I've set a recurring Alarm for 7 am on weekdays

Context

Conversational context is a given when speaking to another person, but not always when interacting with a computer-based system. Many skills are designed for only a quick back-and-forth interaction and can operate well without conversational context. Context can still add much to a skill and make the interaction feel more natural. Here are some examples of how to use context in conversation.

Speaker
User Who is Shaquille O'Neal
Mycroft Shaquille O'Neal is an American former professional basketball player who is a sports analyst on the television program Inside the NBA on TNT. He is considered one of the greatest players in National Basketball Association history
User How tall is he?
Mycroft seven foot 1 inches tall
User when did he retire
Mycroft 2011

Error Handling

Inevitably, the user will say something that your skill can't handle. It's best not to think of these as errors on the part of the user, remember there aren't really errors in conversations. Conversations are naturally cooperative with both parties seeking to continue to a successful outcome. Keeping that in mind you should do your best to avoid Error Handling that is a dead-end.

Avoid

Speaker
User Timer
Mycroft I'm sorry I can't help you with that

Better

Speaker
User Timer
Mycroft A timer for how long?
User 5 minutes

In the first example OVOS does not give the user any options to finish the job they set out to do. Try to avoid situations where the user has to start the conversation over.


Source code: OpenVoiceOS/ovos-workshop.


Read next: Skill Design Best Practices Related: Skill Structure · Asking the User for Responses in OVOS Skills · SSMLBuilder · Statements