Vielen Dank für deinen Besuch. Diese Seite ist nur in Englisch verfügbar.
Alexa Blogs Alexa Developer Blogs /blogs/alexa/feed/entries/atom 2019-10-15T16:06:44+00:00 Apache Roller /blogs/alexa/post/67b9b4a5-9ed8-4621-b717-36e07a393348/tools-for-generating-synthetic-data-helped-bootstrap-alexa-s-new-language-releases Tools for Generating Synthetic Data Helped Bootstrap Alexa’s New-Language Releases Larry Hardesty 2019-10-11T13:00:00+00:00 2019-10-14T13:30:40+00:00 <p>Synthetic-data generators provided initial training data for natural-language-understanding models in Hindi, U.S. Spanish, and Brazilian Portuguese.</p> <p>In the past few weeks, Amazon announced versions of Alexa in three new languages: Hindi, U.S. Spanish, and Brazilian Portuguese.&nbsp;</p> <p>Like all new-language launches, these addressed the problem of how to bootstrap the machine learning models that interpret customer requests, without the ability to learn from customer interactions. At a high level, the solution is to use synthetic data. These three locales were the first to benefit from two new in-house tools, developed by the Alexa AI team, that produce higher-quality synthetic data more efficiently.</p> <p>Each new locale has its own speech recognition model, which converts an acoustic speech signal into text. But interpreting that text — determining what the customer wants Alexa to do — is the job of Alexa’s natural-language-understanding (NLU) systems.</p> <p>When a new-language version of Alexa is under development, training data for its NLU systems is scarce. Alexa feature teams will propose some canonical examples of customer requests in the new language, which we refer to as “golden utterances”; training data from existing locales can be translated by machine translation systems; crowd workers may be recruited to generate sample texts; and some data may come from <a href="https://www.amazon.com/Amazon-Cleo/dp/B01N5QDE0Y" target="_blank">Cleo</a>, an Alexa skill that allows multilingual customers to help train new-language models by responding to voice prompts with open-form utterances.</p> <p>Even when data from all these sources is available, however, it’s sometimes not enough to train a reliable NLU model. The new bootstrapping tools, from Alexa AI’s Applied Modeling and Data Science group, treat the available sample utterances as templates and generate new data by combining and varying those templates.</p> <p>One of the tools, which uses a technique called grammar induction, analyzes a handful of golden utterances to learn general syntactic and semantic patterns. From those patterns, it produces a series of rewrite expressions that can generate thousands of new, similar sentences. The other tool, guided resampling, generates new sentences by recombining words and phrases from examples in the available data. Guided resampling concentrates on optimizing the volume and distribution of sentence types, to maximize the accuracy of the resulting NLU models.</p> <h3><strong>Rules of Grammar</strong></h3> <p>Grammars have been a tool in Alexa’s NLU toolkit since well before the first Echo device shipped. A grammar is a set of rewrite rules for varying basic template sentences through word insertions, deletions, and substitutions.</p> <p>Below is a very simple grammar, which models requests to play either pop or rock music, with or without the modifiers “more” and “some”. Below the rules of the grammar is a diagram of a computational system (a finite-state transducer, or FST) that implements them.</p> <p><img alt="grammar_2.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/grammar_2.png._CB450023968_.png?t=true" style="display:block; height:176px; margin-left:auto; margin-right:auto; width:400px" /><br /> <img alt="FST.png" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/FST.png._CB451792449_.png?t=true" style="display:block; height:89px; margin-left:auto; margin-right:auto; width:600px" /></p> <p style="text-align:center">&nbsp;<sup><em>A toy grammar, which can model requests to play pop or rock music, with or without the modifiers “some” or “more”, and a diagram of the resulting finite-state transducer. The question mark indicates that the </em>some_more<em> variable is optional.</em></sup></p> <p>Given a list of, say, 50 golden utterances, a computational linguist could probably generate a representative grammar in a day, and it could be operationalized by the end of the following day. With the Applied Modeling and Data Science (AMDS) group’s grammar induction tool, that whole process takes seconds.</p> <p>AMDS research scientists Ge Yu and Chris Hench and language engineer Zac Smith experimented with a neural network that learned to produce grammars from golden utterances. But they found that an alternative approach, called Bayesian model merging, offered similar performance with advantages in reproducibility and iteration speed.</p> <p>The resulting system identifies linguistic patterns in lists of golden utterances and uses them to generate candidate rules for varying sentence templates. For instance, if two words (say, “pop” and “rock”) consistently occur in similar syntactic positions, but the phrasing around them varies, then one candidate rule will be that (in some defined contexts)&nbsp;“pop” and “rock” are interchangeable.</p> <p>After exhaustively listing candidate rules, the system uses Bayesian probability to calculate which rule accounts for the most variance in the sample data, without overgeneralizing or introducing inconsistencies. That rule becomes an eligible variable in further iterations of the process, which recursively repeats until the grammar is optimized.</p> <p>Crucially, the tool’s method for creating substitution rules allows it to take advantage of existing catalogues of frequently occurring terms or phrases. If, for instance, the golden utterances were sports related, and the grammar induction tool determined that the words “Celtics” and “Lakers” were interchangeable, it would also conclude that they were interchangeable with “Warriors”, “Spurs”, “Knicks”, and all the other names of NBA teams in a standard catalogue used by a variety of Alexa services.</p> <p>From a list of 50 or 60 golden utterances, the grammar induction tool might extract 100-odd rules that can generate several thousand sentences of training data, all in a matter of seconds.</p> <h3><strong>Safe Swaps</strong></h3> <p>The guided-resampling tool also uses catalogues and existing examples to augment training data. Suppose that the available data contains the sentences “play Camila Cabello” and “can you play a song by Justin Bieber?”, which have been annotated to indicate that “Camila Cabello” and “Justin Bieber” are of the type <em>ArtistName</em>. In NLU parlance, <em>ArtistName</em> is a <em>slot type</em>, and “Camila Cabello” and “Justin Bieber” are <em>slot values</em>.</p> <p>The guided-resampling tool generates additional training examples by swapping out slot values — producing, for instance, “play Justin Bieber” and “can you play a song by Camila Cabello?” Adding the vast Amazon Music databases of artist names and song titles to the mix produces many additional thousands of training sentences.</p> <p>Blindly swapping slot values can lead to unintended consequences, so which slot values can be safely swapped? For example, in the sentences “play jazz music” and “read detective books”, both “jazz” and “detective” would be labeled with the slot type <em>GenreName</em>. But customers are unlikely to ask Alexa to play “detective music”, and unnatural training data would degrade the performance of the resulting NLU model.&nbsp;</p> <p>AMDS’s Olga Golovneva, a research scientist, and Christopher DiPersio, a language engineer, used the Jaccard index — which measures the overlap between two sets — to evaluate pairwise similarity between slot contents in different types of requests. On that basis, they defined a threshold for valid slot mixing.</p> <h3><strong>Quantifying Complexity</strong></h3> <p>As there are many different ways to request music, another vital question is how many variations of each template to generate in order to produce realistic training data. One answer is simply to follow the data distributions from languages that Alexa already supports.&nbsp;</p> <p>Comparing distributions of sentence types across languages requires representing customer requests in a more abstract form. We can encode a sentence like “play Camila Cabello” according to the word pattern <em>other + ArtistName</em>, where <em>other</em> represents the verb “play”, and <em>ArtistName</em> represents “Camila Cabello”. For “play ‘Havana’ by Camila Cabello”, the pattern would be <em>other + SongName + other + ArtistName</em>. To abstract away from syntactic differences between languages, we can condense this pattern further to <em>other + ArtistName + SongName</em>, which represents only the semantic concepts included in the request.&nbsp;</p> <p>Given this level of abstraction, Golovneva and DiPersio investigated several alternative techniques for determining the semantic distributions of synthetic data.&nbsp;</p> <p>Using Shannon entropy, which is a measure of uncertainty, Golovneva and DiPersio calculated the complexity of semantic sentence patterns, focusing on slots and their combinations. Entropy for semantic slots takes into consideration how many different values each slot might have, as well as how frequent each slot is in the data set overall. For example, the slot <em>SongName</em> occurs very frequently in music requests, and its potential values (different song titles) number in the millions; in contrast, <em>GenreName</em> also occurs frequently in music requests, but its set of possible values (music genres) is fairly small.&nbsp;</p> <p>Customer requests to Alexa often include multiple slots (such as “play ‘Vogue’|<em>SongName</em> by Madonna|<em>ArtistName</em>” or “set a daily|<em>RecurrenceType</em> reminder to {walk the dog}|<em>ReminderContent</em> for {seven a. m.}|<em>Time</em>”), which increases the pattern complexity further.&nbsp;</p> <p>In their experiments, Golovneva and DiPersio used the entropy measures from slot distributions in the data and the complexity of slot combinations to determine the optimal distribution of semantic patterns in synthetic training data. This results in proportionally larger training sets for more complex patterns than for less complex ones. NLU models trained on such data sets achieved higher performance than those trained on datasets which merely “borrowed” slot distributions from existing languages.</p> <p>Alexa is always getting smarter, and these and other innovations from AMDS researchers help ensure the best experience possible when Alexa launches in a new locale.</p> <p><em>Janet Slifka, a senior manager for research science in Alexa AI’s Natural Understanding group, leads the Applied Modeling and Data Science team.</em></p> <p><a href="https://developer.amazon.com/alexa/science" target="_blank"><strong>Alexa science</strong></a></p> <p><strong>Acknowledgments</strong>: Ge Yu, Chris Hench, Zac Smith, Olga Golovneva, Christopher DiPersio, Karolina Owczarzak, Sreekar Bhaviripudi, Andrew Turner</p> <p><strong>Related</strong>:</p> <ul> <li><a href="https://developer.amazon.com/blogs/alexa/post/32f8381b-1b30-4f42-bbcd-4dfad6605eb5/active-learning-algorithmically-selecting-training-data-to-improve-alexa-s-natural-language-understanding" target="_blank">Active Learning: Algorithmically Selecting Training Data to Improve Alexa’s Natural-Language Understanding</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/11b51c0b-9794-48bf-81c1-ecadf63fede3/adapting-alexa-to-regional-language-variations" target="_blank">Adapting Alexa to Regional Language Variations</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/45276f8f-83e7-4446-855f-0bb0d5019f07/training-a-machine-learning-model-in-english-improves-its-performance-in-japanese" target="_blank">Training a Machine Learning Model in English Improves Its Performance in Japanese</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/306022ab-dcf6-473d-9144-03f478c31579/how-we-add-new-skills-to-alexa-s-name-free-skill-selector" target="_blank">How We Add New Skills to Alexa’s Name-Free Skill Selector</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/0535b1ff-d810-4933-a197-841bfb3fa894/cross-lingual-transfer-learning-for-bootstrapping-ai-systems-reduces-new-language-data-requirements" target="_blank">Cross-Lingual Transfer Learning for Bootstrapping AI Systems Reduces New-Language Data Requirement</a>s</li> </ul> /blogs/alexa/post/fec54390-8005-4e0d-9df8-48b0194e8d02/what-s-new-in-the-alexa-skills-kit-september-2019-release-roundup What's New in the Alexa Skills Kit: September 2019 Release Roundup Leo Ohannesian 2019-10-11T00:09:57+00:00 2019-10-11T00:09:57+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/Intent-history_blog.png._CB460678784_.png?t=true" style="height:480px; width:1908px" /></p> <p>In this roundup video we share details about the new things released for skill developers last month, including the Web API for Games (Preview), Alexa-hosted Skills Python Support, the NLU Evalution tool, and all of the announcements from our September Event.</p> <p><em><strong>Editor's Note: </strong>Our monthly release roundup series showcases the latest in Alexa Skills Kit developer tools and features that can make your skills easier to manage, simpler to deploy, and more engaging for your customers. Build with these new capabilities to enable your Alexa skills to drive brand or revenue objectives.</em></p> <p>In this roundup video we share details about the new things released for skill developers last month, including the Web API for Games (Preview), Alexa-hosted Skills Python Support, the NLU Evalution tool, and all of the announcements from our September Event. Check out the entire video for more information from Alexa evangelists and code samples.</p> <p><iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/XQL1hEWqHRA" width="640"></iframe></p> <h2>1.&nbsp;Read developer news related to the September event</h2> <p>We are excited to announce new developer tools to accompany a brand new line-up of Alexa devices. Now you can deliver skills in more places, build experiences for existing and new audiences, and reach more customers in their preferred languages.&nbsp;<a href="https://developer.amazon.com/blogs/alexa/post/e4e576c1-21e1-45c1-8086-70a50b78e172/announcing-new-alexa-skills-kit-capabilities-supporting-the-latest-echo-devices-more-languages-and-personalization" target="_blank">Check out the announcement here</a>.</p> <p>&nbsp;</p> <ul> </ul> <h2>2. Publish visually rich, interactive skills with Alexa Presentation Language (APL), now generally available</h2> <p>Alexa Presentation Language (APL) is now generally available. We will continue to add new features, tools, and resources to APL over the coming months. <a href="https://developer.amazon.com/blogs/alexa/post/f01a503d-e3a4-4ef8-a2ef-9372c8570033/alexa-presentation-language-now-generally-available-build-multimodal-experiences-that-come-alive-with-animation" target="_blank">Check out the announcement</a> or&nbsp;<a href="https://developer.amazon.com/docs/alexa-presentation-language/understand-apl.html" target="_blank">read about it in our docs</a>.&nbsp;</p> <p>&nbsp;</p> <h2>3. Publish Spanish skills in the US and Make Money with In-Skill Purchasing (ISP) and Alexa Developer Rewards</h2> <p>In the coming weeks, you’ll be able to publish Spanish skills in the US and make money with in-skill purchasing (ISP) and Alexa Developer Rewards.&nbsp;<a href="https://https://developer.amazon.com/blogs/alexa/post/56d1e4a5-ce06-49be-a6ef-75d49763223b/spanish-skills-are-going-live-in-the-us-with-in-skill-purchasing-isp-and-alexa-developer-rewards" target="_blank">Check out the announcement here</a>&nbsp;and <a href="http://https://developer.amazon.com/es/docs/custom-skills/develop-skills-in-multiple-languages.html" target="_blank">the technical documentation here.&nbsp;</a></p> <p>&nbsp;</p> <h2>4. Build Games with Web Technologies (Preview)</h2> <p>The Alexa Web API for Games (Developer Preview) introduces new web technologies and tools to create visually rich and interactive voice-controlled game experiences.&nbsp;<a href="https://developer.amazon.com/blogs/alexa/post/e4e576c1-21e1-45c1-8086-70a50b78e172/announcing-new-alexa-skills-kit-capabilities-supporting-the-latest-echo-devices-more-languages-and-personalization" target="_blank">Read the announcement here</a> or <a href="https://build.amazonalexadev.com/AlexaWebAPIforGames.html" target="_blank">sign up for the preview</a>.&nbsp;</p> <p>&nbsp;</p> <h2>5. Use Alexa voice profiles (Preview) to personalize your&nbsp;content for your customers</h2> <p>Soon your skill will be able to deliver customized information based on who is speaking. Learn more and sign up for the Developer Preview here.&nbsp;<a href="https://developer.amazon.com/blogs/alexa/post/2d754e03-e754-4454-9cb5-927472473c1f/announcing-personalized-alexa-skill-experiences-developer-preview" target="_blank">Read the announcement here</a>.</p> <p>&nbsp;</p> <ul> </ul> <h2>6. The&nbsp;Alexa Education Skill API (Preview) allows you to easily create voice interfaces for Education Technology Applications</h2> <p>With the Alexa Education Skill API (Developer Preview), integrating ed-tech systems such as Learning Management Systems (LMS), Student Information Systems (SIS), and Classroom Management and massively open online course (MOOC) platforms is quick and easy.&nbsp;Parents and students 13 and older can get information about their school and assignments directly from Alexa without the added step of opening a skill by asking&nbsp;“Alexa, how is Kaylee doing in school?” or “Alexa, what is my homework tonight?”. <a href="https://developer.amazon.com/blogs/alexa/post/92af8bc8-d076-4df4-9121-d2e968fea00a/the-alexa-education-skill-api-preview-allows-you-to-easily-create-voice-interfaces-for-education-technology-applications" target="_blank">Read about it here</a>.&nbsp;</p> <p>&nbsp;</p> <h2>7. LEGO MINDSTORMS Voice Challenge: Powered by Alexa — Your Chance to Win Up to $100,000 in Prizes</h2> <p>We are thrilled to announce LEGO MINDSTORMS Voice Challenge: Powered by Alexa – an opportunity for Alexa developers, LEGO MINDSTORMS enthusiasts, and creators around the world to explore and build the future of voice-based experiences through construction and robotics play. Enter for your chance to win from over one hundred prizes worth up to $100,000.<a href="https://developer.amazon.com/blogs/alexa/post/d1ece4c7-7d33-43da-8b98-c42d3edb6f85/lego-mindstorms-voice-challenge-offers-a-chance-to-win-up-to-100-000-in-prizes" target="_blank"> Read the announcement here.&nbsp;</a></p> <p>&nbsp;</p> <h2>8. Populate custom slot values with URL reference to an existing catalog</h2> <p>We are excited to announce the launch of reference based Catalog management features (SMAPI and CLI) for managing custom slots. Using this feature, developers can now create slot types to ingest values from an external data source with a URL reference to the catalog. For example, a recipe skill developer will now be able to pull a list of ingredients from their existing catalog instead of having to enter each individual ingredients and keep both data sources in sync.&nbsp;<a href="https://developer.amazon.com/docs/smapi/Reference-based-catalog-management-for-custom-slots-CLI.html" target="_blank">Read the technical documentation.&nbsp;</a></p> <p>&nbsp;</p> <h2>9. Develop Alexa-hosted skills in Python</h2> <p>Python developers can now get started quickly with Alexa skills. Alexa-hosted skills now support Python from both the Alexa Developer Console and the ASK CLI.&nbsp;<a href="http://https://developer.amazon.com/docs/hosted-skills/build-a-skill-end-to-end-using-an-alexa-hosted-skill.html" target="_blank">Read the tech docs.&nbsp;</a></p> <p>&nbsp;</p> <h2>10.&nbsp;Batch test your skill model with the NLU Evaluation Tool</h2> <p>The NLU Evaluation Tool helps you avoid overtraining your skill’s NLU model by identifying which&nbsp;utterances will improve accuracy if added to your&nbsp;Interaction Model, create and run regression tests on your skill’s NLU model, and measure accuracy of your skill’s NLU model with anonymized frequent live utterances. <a href="https://developer.amazon.com/blogs/alexa/post/a5b37f34-83c8-4274-b576-073a21dfdb7a/build-test-and-tune-your-skills-with-three-new-tools1" target="_blank">Read the blog here.&nbsp;</a><a href="https://developer.amazon.com/docs/custom-skills/batch-test-your-nlu-model.html" target="_blank">Read the tech docs here.&nbsp;</a></p> <p>&nbsp;</p> <p>As always, we can't wait to see what you build. As a reminder, learn how to get the most out of the tech docs by visiting the <a href="https://developer.amazon.com/docs/ask-overviews/latest-tips-documentation.html" target="_blank">Latest Tips page.</a></p> /blogs/alexa/post/a3044117-24ac-44a1-8452-fc2f42a84108/skill-flow-builder-tips-and-tricks-use-extensions-to-level-up-your-narrative-driven-games Skill Flow Builder Tips and Tricks: Use Extensions to Level Up Your Narrative-Driven Games June Lee 2019-10-09T18:10:56+00:00 2019-10-09T19:25:50+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/blog_SkillFlowBuilder_954x240.png._CB440696291_.png" /></p> <p>Here are some tips and tricks for using Skill Flow Builder (SFB), a tool for visually designing and building story-based game skills which makes it easier for content creators to create skills without needing a large development team.</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/blog_SkillFlowBuilder_954x240.png._CB440696291_.png" /> In July, we released <a href="https://developer.amazon.com/docs/custom-skills/understand-the-skill-flow-builder.html">Skill Flow Builder</a> (SFB), a tool for visually designing and building story-based game skills which makes it easier for content creators to create skills without needing a large development team. If you’re new to SFB, you can check out <a href="https://developer.amazon.com/blogs/alexa/post/83c61d4e-ab3f-443e-bf71-75b5354bdc9e/skill-flow-builder">our introductory blog post</a> for an overview of the SFB Editor and how to get started. This blog post assumes you have built at least one skill in SFB and is intended for intermediate to advanced users.</p> <p>For most experiences, the SFB Editor and features are enough to build a rich experience with dynamic responses that keep users returning. But what happens when you hit the extent of SFB’s base features? Maybe it’s some complex math. Maybe you need to keep track of inventory or divert logic to a mini game. When the plethora of SFB features run out, it’s time to build an extension. Luckily, SFB makes extension building easy.</p> <h2>When to Create an Extension</h2> <p>So you’ve created a robust story-based game using SFB. Your players can travel across the world and fight deadly beasts. They can collect key items for progression and make pivotal plot decisions. At first, the inventory is basic—only a few items to keep track of—but as your story grows, the inventory grows with it. Users may grow frustrated when they’re offered the wrong item at the wrong time. A user who’s in the middle of combat and extremely low on health won’t want to search to find their health potion. They’ll want it to be offered to them without even having to search. Selecting the right composition of items to suggest to a player starts to require more and more conditional statements in SFB’s Editor. This is the point when an extension becomes an asset.</p> <p>At their core, extensions are simply functions that your SFB story may leverage at any time. If your conditional statements start requiring more than three comparisons or your list of flagged items grows from a manageable 15 to 50, it’s time to look into creating an extension. If it takes 10 lines of logic to do what feels like basic math, it might be time for an extension.</p> <p>There are three types of extensions: DriverExtension, InstructionExtension, and ImporterExtension. You can learn more about the syntax and functionality of these extension types in the <a href="https://developer.amazon.com/docs/custom-skills/set-up-the-skill-flow-builder-as-a-developer.html#custom">SFB documentation</a>. For the purposes of this blog, we’re going to focus on the extension type you’ll use the most: InstructionExtension.</p> <p>An InstructionExtension is composed of functions called by the story files as the story is running. Some use cases for the InstructionExtension include:</p> <ol> <li>Complex math on a variable such as exponents and remainder division</li> <li>Inventory management</li> <li>Store/catalog management</li> <li>Iterating over time-dependent components</li> <li>Mass setting or unsetting variable</li> <li>Calling external APIs that do not cause the skill session to exit</li> </ol> <p>So what are some ways you might use an InstructionExtension in your own game skills? Let’s dive into some examples. We’ll start with a simple example to get you familiar with the layout of extensions and then move on to a separate advanced example that combines multiple extension types.</p> <h2>Basic Example: Enable/Disable Cheat Codes with Environment Variables</h2> <p>Over time, your SFB story may grow to become a game that can’t be completed in a short amount of time. You may want to be able to easily jump around through the game and automatically set variables as you go. However, you don’t want this functionality to be available to live users. In this example, we’ll use an InstructionExtension to process which version of the skill the player is accessing and then restrict access to content.</p> <p>To make restricting access easy, we’ll set an environment variable in Lambda with a key of VERSION and possible values of dev or prod. Since this is a variable that is not accessible by SFB automatically, we need to inject that information into the story.</p> <h3>Build the InstructionExtension</h3> <p>When you create a new SFB story, it includes SampleCustomExtension.ts in the code/extensions folder. For ease, we’ll add our environment setter to SampleCustomExtension.ts.</p> <p>First, replace the code in your SampleCustomExtension.ts file with the following:</p> <pre> <code>import { InstructionExtension, InstructionExtensionParameter } from '@alexa-games/sfb-f'; /** * Custom InstructionExtension */ export class SampleCustomExtension implements InstructionExtension { public async setEnvironment(param: InstructionExtensionParameter): Promise&lt;void&gt; { console.info(&quot;Player environment is: &quot;, process.env.VERSION); param.storyState.environmentType = process.env.VERSION ? process.env.VERSION : &quot;dev&quot;; } }</code></pre> <h3>Call the Extension from the Story Files</h3> <p>Now that we have an extension, we need to access it from the story files. To prevent production/live skill users from accessing the cheat codes, we can use a simple IF statement to restrict access to a reusable scene called cheat_codes. In this example, if the skill is using the version of “dev” and the user says “cheat,” then it’ll route to the cheat code. Otherwise, the story goes back to the previous scene.</p> <p>Add the following code to your story.abc file. If you already have @global_append, then you should extend that section with the call to setEnvironment and the environmentType check.</p> <pre> <code>@global_append *then setEnvironment if environmentType == 'dev' { &lt;-&gt; cheat_codes } @cheat_codes *then hear cheat { -&gt; cheat } hear cheat more { -&gt; cheat_more } &gt;&gt; RETURN </code></pre> <p>&nbsp;</p> <h2>Advanced Example: Get User Consumables from the Monetization API</h2> <p>In this example, we’re going to do a simple get request to the Monetization Service Client to determine if a consumable is purchasable. Since monetization is not available in every locale, this allows us to avoid presenting an upsell to users who can’t or shouldn’t be offered the consumable.</p> <p>Before we get started, make sure you’re familiar with setting up in-skill purchasing (ISP) for a skill and the requirements for consumables. You can read more about in-skill purchasing in the <a href="https://developer.amazon.com/docs/in-skill-purchase/isp-overview.html">documentation</a>.</p> <p>Unfortunately, the InstructionExtension can’t access <strong>handlerInput</strong> and the monetization service requires the user’s locale from handlerInput. However, the DriverExtension can access the request object from Alexa before it reaches the SFB logic. The InstructionExtension allows us to send data back and forth to the story files while the DriverExtension can communicate with external services. Luckily, in SFB you can combine any of the extension types together into a single extension file, so you can use both at the same time.</p> <p>You can view the full Typescript file for this extension in the <a href="https://github.com/alexa/alexa-cookbook/blob/master/code-snippets/skill-flow-builder/ISPExtension.ts">Alexa Cookbook code snippets</a>.</p> <h3>Create the File for the Custom Extension</h3> <p>Just like you did in the basic example, you'll need to create a file to hold your extension code. Unlike that example, though, you also need to import DriverExtension and DriverExtensionParameter. Next, to combine two extension types, you just need to implement the additional types in the class. For our ISP extension, you’ll implement <strong>InstructionExtension</strong> and <strong>DriverExtension</strong>.<br /> First, add a new file to the extensions folder in your SFB project and name it ISPExtension.ts. Once you have your file ready, add the following code to ISPExtension.ts to create the framework for the extension.</p> <pre> <code class="language-javascript">import { InstructionExtension, DriverExtension, InstructionExtensionParameter, DriverExtensionParameter, } from &quot;@alexa-games/sfb-f&quot;; export class ISPExtension implements InstructionExtension, DriverExtension { }</code></pre> <h3>Build the DriverExtension</h3> <p>The DriverExtension is similar to the request and response interceptors available in the Alexa Skills Kit SDK. The logic is executed before the request reaches SFB and/or before the response is sent to the user. This makes the DriverExtension great for cleaning up data or doing additional logic on story content. A DriverExtension requires both a <strong>pre</strong> and a <strong>post</strong> function, but either of these can be left empty. In this case, we only need the pre function to get the <strong>handlerInput</strong> object.</p> <pre> <code class="language-javascript">private handlerInput: any; async pre(param: DriverExtensionParameter) { this.handlerInput = param.userInputHelper.getHandlerInput(); return; } async post(param: DriverExtensionParameter) { // Use for post processing, not needed this time }</code></pre> <p>Add the following code inside the ISPExtension class you created in the previous step to add pre and post functionality:</p> <h3>Build the InstructionExtension</h3> <p>Now that we have the handlerInput, we can send requests to the Monetization Service Client and also access the user’s locale. The next step is to add two functions: one to check purchasable status and one to check the number of consumables purchased. Additionally, there is a separate function for making the request to the Monetization Service Client.</p> <p><strong>Purchasable</strong></p> <p>The sole goal of this extension is to be easily callable from the story files. The function for “purchasable” sets the type of request the skill is making; in this case, the type is “purchasable.” We’ll then use a variable from the storyState, <strong>monetizationPurchasable</strong>, to flag whether the item is available. <strong>storyState</strong> is passed back and forth from the story files and contains details about the user such as current point in the story and any variables that have been added or flagged over time.</p> <p>Once purchasable and request type (workflowType) are set, the function simply triggers a call to the Monetization Service Client via the getMonetizationData function.</p> <p>Add the following code below the pre and post code you added earlier:</p> <pre> <code class="language-javascript">public async purchasable(param: InstructionExtensionParameter): Promise { param.instructionParameters.workflowType = &quot;purchasable&quot;; param.storyState.monetizationPurchasable = false; param.storyState = await this.getMonetizationData(param); return; } </code></pre> <p><strong>Consumable</strong></p> <p>The function for consumable is intended to retrieve the amount of a consumable that’s been purchased and is available for a user. All this basic function needs to do is set the workflowType of “consumable.”</p> <p>Add the following code for consumable below the purchasable function. This function just sets the workflowType and allows the consumable checks to be called separately from purchasable checks.</p> <pre> <code class="language-javascript">public async consumable(param: InstructionExtensionParameter): Promise { param.instructionParameters.workflowType = &quot;consumable&quot;; param.storyState = await this.getMonetizationData(param); return; } </code></pre> <p><strong>getMonetizationData()</strong></p> <p>While purchasable and consumable are vanity calls to make the monetization checks easily referable from the story files, the getMonetizationData function does all of the work for calling the Monetization Service Client. The structure is almost identical to standard Node.js calls to the client, with some added references to storyState for the amount of the consumable that has been purchased.</p> <p>The following code does additional checks to verify if the consumable amount is out of sync with what is being stored by the skill. Add this section to ISPExtension.ts below the consumable function you added in the previous step:</p> <pre> <code class="language-javascript">private async getMonetizationData( param: InstructionExtensionParameter ): Promise { const product = param.instructionParameters.item; // Supplied from the story file if (!product) { throw [AlexaMonetizationExtension Syntax Error] monetized item=[${product}] not provided.; } const ms: any = this.handlerInput.serviceClientFactory.getMonetizationServiceClient(); const locale: string = this.handlerInput.requestEnvelope.request.locale; const isp: any = await ms.getInSkillProducts(locale).then((res: any) =&gt; { if (res.inSkillProducts.length &gt; 0) { let item = res.inSkillProducts.filter( (record: any) =&gt; record.referenceName === product ); return item; } }); // Return product information based on user request if (param.instructionParameters.workflowType === “purchasable”) { if (isp &amp;&amp; isp[“purchasable”] === “PURCHASABLE”) { console.info(“Item is purchasable: “, isp.name); // Easily indicate within the story the item is purchasable param.storyState.monetizationPurchasable = true; } else { console.info(“Item cannot be purchased: “, product); } } else if (param.instructionParameters.workflowType === “consumable”) { if (isp &amp;&amp; isp.activeEntitlementCount) { let itemAmount: number = parseInt(isp.activeEntitlementCount); param.storyState[${product}Purchased] = itemAmount; // Set the purchased and consumed session variables to keep track during game if (itemAmount) { if (!param.storyState[${product}Consumed]) { param.storyState[${product}Consumed] = 0; } if (param.storyState[${product}Consumed] &gt; itemAmount) { // User shows as using more of the consumable than purchased param.storyState[${product}Consumed] = itemAmount; } } param.storyState.monetizationPurchasable = true; } else { console.info(“Item is not available: “, product); param.storyState[${product}Consumed] = 0; param.storyState[${product}Purchased] = 0; param.storyState[${product}] = 0; param.storyState.monetizationPurchasable = false; } } return param.storyState; } </code></pre> <h3>Call the Extension from the Story Files</h3> <p>We have an extension and we have some basic parameters for checking the state of a consumable. Now let’s call it from a scene in the story. For the sake of this example, we’re making a redundant check if the item is purchasable to demonstrate how each function works. In practice, you can just use the consumable function since it already checks if an ISP item is purchasable.</p> <p>Add the following code for the reusable @check_item scene to your story.abc file. To test the code, you can follow the Basic example and call @check_item from @global_append.</p> <pre> <code>@check_item *then purchasable item=’coffee’ if monetizationPurchasable { consumable item=’coffee’ // Reset the amount of the consumable that is available to use set coffee to coffeePurchased decrease coffee by coffeeConsumed -&gt; has_item_scene } if !monetizationPurchasable { -&gt; no_buy_scene } </code></pre> <p>Now, if you release your skill in a locale that doesn’t support monetization, you can avoid sending users an upsell dialog by first checking if the item is available. You can also keep the amount of a consumable that is available up-to-date as the user progresses through the skill.</p> <p>This may seem like a complex extension, but at the core all we’ve done is take an API call and add some additional story variables to it.</p> <h3>Conclusion</h3> <p>Extensions are a great tool for passing story variables back and forth without having to do complex SFB logic within the story files themselves. We went through a basic example to access data not readily available to the story files and then a more advanced example of how to call external APIs with SFB. Extensions allow you to add more robust logic to your story-based games and take your adventures from simple narratives to leveling adventures. You can now take this knowledge and add combat modules, character progression, and get those health potions to the right players when they need them.</p> <p>We’re always excited to hear about your extensions, so feel free to share your creations with us on Twitter!</p> /blogs/alexa/post/a5b37f34-83c8-4274-b576-073a21dfdb7a/build-test-and-tune-your-skills-with-three-new-tools1 Build, Test, and Tune Your Skills with Three New Tools Leo Ohannesian 2019-10-09T17:35:13+00:00 2019-10-10T00:24:11+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/SkillBuilder.png._CB451694446_.png" style="height:480px; width:1908px" /></p> <p>We’re excited to announce the General Availability of&nbsp;Natural Language Understanding (NLU) Evaluation Tool and Utterance Conflict Detection. We are also excited to announce the&nbsp;Get Metrics API, now in Beta.&nbsp;</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/SkillBuilder.png._CB451694446_.png" /></p> <p>We’re excited to announce the General Availability of two tools which focus on your voice model’s accuracy: Natural Language Understanding (NLU) Evaluation Tool and Utterance Conflict Detection. We are also excited to announce that you will now be able to build your own quality and usage reporting with the Get Metrics API, now in Beta. These tools help complete the suite of Alexa skill testing and analytics tools that aide in creating and validating your voice model prior to publishing your skill, detect possible issues when your skill is live, and help you refine your skill over time.<br /> <br /> The NLU Evaluation Tool helps you batch test utterances and compare how they are interpreted by your skill’s NLU model against your expectations. The tool has three use cases:</p> <ol> <li>Prevent overtraining NLU models: overtraining your NLU model with too many sample utterances and slot values can reduce accuracy. Instead of adding exhaustive sample utterances to your interaction model, you can now run NLU Evaluations with utterances you expect users to say. If any utterance resolves to the wrong intent and/or slot, you can improve accuracy of your skill’s NLU model by only adding those utterances as new training data (by creating new sample utterances and/or slots).</li> <li>Regression tests - you can create regression tests and run them after adding new features to your skills to ensure your customer experience stays intact.</li> <li>Accuracy measurements - you can measure the accuracy of your skill’s NLU model by running an NLU Evaluation with anonymized frequent live utterances surfaced in Intent History (production data), and then measure the impact on accuracy for any changes you make to their NLU model.</li> </ol> <p><br /> Utterance Conflict Detection helps you detect utterances which are accidentally mapped to multiple intents, which reduces accuracy of your Alexa skill’s Natural Language Understanding (NLU) model. This tool is automatically run on each model build and can be used prior to publishing the first version of your skill or as you add intents and slots over time - preventing you from building models with unintended conflicts.<br /> <br /> Finally, with the Get Metrics API (Beta) you can immediately benefit from the ability to analyze key metrics like unique customers in your preferred tools for analysis or aggregation. For Example, you can now connect to AWS CloudWatch and create monitors, alarms and dashboards in order to stay on top of changes that may impact customer engagement.<em> </em><br /> <br /> With these three additions to the ASK Tech toolset, we will recap the overall suite of testing and feedback tools you have available and where they fall in the overall skill development lifecycle. The skill development lifecycle can be separated into three general steps that come after your design phase (see situational design): building, testing, and tuning.<br /> <br /> <strong>Build Your Dialog Model</strong><br /> As you are defining your intents, slots, and dialogs from the ground up per your <a href="https://developer.amazon.com/docs/alexa-design/get-started.html" target="_blank">situational design definition,</a> you will want to test how utterances fall into your model. This is where <a href="https://developer.amazon.com/docs/custom-skills/test-utterances-and-improve-your-interaction-model.html" target="_blank">utterance profiler</a> is useful. You can enter utterances to see how they resolve to your intents and slots. When an utterance does not invoke the right intent or slot, you can update your sample utterances or slot and retest, all before writing any code for your skills. You should set up a <a href="https://developer.amazon.com/docs/custom-skills/standard-built-in-intents.html#fallback" target="_blank">fallback intent</a> for requests that your skill does not know how to interpret, otherwise known as unhandled requests. Now, as you’re building your voice model out, you can use <a href="https://developer.amazon.com/docs/custom-skills/find-utterance-conflicts-in-your-model.html" target="_blank">utterance conflict detection</a> to ensure that there aren’t conflicting utterances with respect to your VUI. Utterance conflict detection will identify utterances (and slots) that map to more than one intent. Outlining conflicting utterance will help you detect areas where the NLU model of your skill could break and cause an unintended customer experience.<br /> <br /> <strong>Test Before Go-Live</strong><br /> As you approach voice model readiness, you will want to test using the built in <a href="https://developer.amazon.com/docs/devconsole/test-your-skill.html#test-simulator" target="_blank">Alexa Simulator.</a> You can also <a href="https://developer.amazon.com/docs/devconsole/test-your-skill.html#h2_register" target="_blank">test-distribute to your Alexa device</a> or go <a href="https://developer.amazon.com/docs/custom-skills/skills-beta-testing-for-alexa-skills.html" target="_blank">for beta testing. </a>As your voice model becomes solidified, you can start using the <a href="https://developer.amazon.com/docs/custom-skills/batch-test-your-nlu-model.html" target="_blank">NLU Evaluation Tool</a> to batch test utterances and how they fit into your voice model. You will need to define a set of utterances mapped to the intents and slots you expect to be sent to your skill. You can then run an NLU Evaluation and add to your slots and intents to improve the accuracy of your skill depending on the results. Before going live, you will want to both<a href="https://developer.amazon.com/docs/custom-skills/functional-testing-for-a-custom-skill.html" target="_blank"> functionally test</a> and <a href="https://developer.amazon.com/docs/custom-skills/test-and-debug-a-custom-skill.html" target="_blank">debug your skill. </a><br /> <br /> <strong>Tune Over Time</strong><br /> The skill development journey has only begun when you go live. You can use Interaction path Analysis to begin to understand your customer’s journey through your skill, and where possible bottlenecks are. <a href="https://developer.amazon.com/blogs/alexa/post/f2ef2a55-b465-4580-a9fc-2c0a9be49f00/gain-interaction-insights-using-new-analytics-in-the-ask-developer-console" target="_blank">Interaction path analysis</a> shows aggregate skill usage patterns in a visual format, including which intents your customers use, in what order. This enables you to verify if customers are using the skill as expected, and to identify interactions where customers become blocked or commonly exit the skill. You can use insights gained from interaction path analysis to make your flow more natural, fix errors, and address unmet customer needs.<br /> <br /> The <a href="https://developer.amazon.com/docs/custom-skills/review-intent-history-devconsole.html" target="_blank">Intent History page</a> of the developer console displays aggregated, anonymized frequent live utterances and the resolved intents. You can use this to learn how users interact with your skill to identify improvements you may want to make to your interaction model. The Intent History page displays the frequent utterances in two tabs, <a href="https://developer.amazon.com/docs/custom-skills/review-intent-history-devconsole.html#review-and-resolve" target="_blank">Unresolved Utterances</a>, which did not successfully map to an Intent, and Resolved Utterances, which mapped successfully to an intent and slot. This lets you review the utterances, update your interaction model to account for phrases that were not routed correctly, and mark utterances as <em>resolved</em>. For example, suppose you see a particular utterance that was sent to <code>AMAZON.FallbackIntent</code>, but it is actually a phrase that should trigger one of your custom intents. You can map that utterance directly to that intent and update your interaction model right from the Intent History page. Conversely, you could add to your voice model if you find that an utterance falling to the Fallback intent is a good feature for your skill. As mentioned above, you can also use the utterances surfaced in Intent History to run a <a href="https://developer.amazon.com/docs/custom-skills/batch-test-your-nlu-model.html" target="_blank">NLU Evaluation</a> and generate an accuracy indicator for your skill. You can also re-run the test after making changes to your skill model to measure the overall impact on your skill experience, otherwise known as a regression test.<br /> <br /> Access to skill metrics was <a href="https://developer.amazon.com/docs/devconsole/measure-skill-usage.html" target="_blank">previously restricted to pre-configured dashboards displaying static metrics in the developer console</a>. Static metrics are insightful but fall short when you need to automate mechanisms that guarantee operational continuity. In contrast, with the <a href="https://developer.amazon.com/docs/smapi/metrics-api.html" target="_blank">Get Metrics API (Beta)</a>, you can set up live metrics to your preferred analysis tools to pinpoint changes in your Skill's performance and behavior. You can now compute your own aggregated metrics or create automation that feeds that data into a monitoring system like<a href="https://aws.amazon.com/cloudwatch/" target="_blank"> AWS CloudWatch</a>, where you can create alarms or trigger changes in your skill based on certain inputs. For example, you can track how new customers are interacting with your skill and set up alarms to understand when indicators of a bad user experience surface, like when customers land on the <code>AMAZON.FallbackIntent</code> at a higher rate than normal. The Get Metrics API (Beta) also works across multiple skills so you can now set up aggregated reporting for your entire skills dialog without switching back-and-fourth to the developer console.<br /> <br /> With the new Get Metrics API, you can save time and increase visibility into the key insights that we provide in order to optimize skill engagement. The Get Metrics API is available for skill builders in all locales and currently supports the Custom skill model, the pre-built Flash Briefing model, and the Smart Home Skill API.<br /> <br /> <strong>Start Optimizing today </strong><br /> Begin working with the three new tools in order to create an optimal customer experience. Start by reading our technical documentation on the <a href="https://developer.amazon.com/docs/custom-skills/batch-test-your-nlu-model.html" target="_blank">NLU Evaluation Tool</a>, <a href="https://developer.amazon.com/docs/custom-skills/find-utterance-conflicts-in-your-model.html" target="_blank">Utterance Conflict Detection</a>, and the <a href="https://developer.amazon.com/docs/smapi/metrics-api.html" target="_blank">Get Metrics API (Beta)</a> today!</p> /blogs/alexa/post/95b86f3c-c0c3-4c65-807f-9b82dcc8d04c/designing-skills-for-in-skill-purchasing-part-2-surface-upsells Designing skills for In-Skill Purchasing, Part 2: Surface Upsells Ben Grossman 2019-10-08T23:52:43+00:00 2019-10-08T23:52:43+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/ISP_Tech_Blog_Header._CB496589928_.png" style="height:240px; width:954px" /></p> <p>Welcome to Part 2 in our series on designing skills with in-skill purchasing (ISP)! Today we’ll discuss how to surface upsells effectively in your skill to drive conversions and build customer trust.</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/ISP_Tech_Blog_Header._CB496589928_.png" style="height:240px; width:954px" /></p> <p>Welcome to Part 2 of our series on designing skills with in-skill purchasing (ISP)! In <a href="https://developer.amazon.com/blogs/alexa/post/33cce9ae-97a9-4b33-9652-3a0ea76ec5ef/designing-skills-for-in-skill-purchasing-part-1-scope-it-right" target="_blank">Part 1</a>, we discussed the different types of ISPs, and scoped a hypothetical trivia skill – Seattle Super Trivia – for three kinds of purchases (a subscription, some one-time purchases, and a consumable). Now that we’ve established some best practices for <em>what</em> to offer, it’s time to decide <em>how</em> we’ll offer these products to our customers. Specifically, when we’ll tell them about what they can buy. In Part 3, we’ll discuss how to write an effective upsell message, but we need to decide when those messages will appear first.<br /> <br /> Unlike an app, skills don’t have a screen to use to remind a customer of purchases that are available: There’s no buy button in a skill, no modal windows, and no popups. A skill that offers in-skill purchases is most effective when it follows some of the best practices one might experience in a live sales conversation: The skill will need to engage the customer, get to know them, build trust and excitement, then ask for the sale at the right time and follow up in a way that isn’t intrusive or annoying.<br /> <br /> No one likes a persistent car salesman that constantly tries to push their customers to buy a car that isn't right for them. Your skill should avoid pressuring your customer to buy something. Don't offer them the tricked-out 2020 armored sports car with all the upgrades before you find out the affordable, no-frills daily driver was the best fit for them: They'll have walked away from your lot (your skill) already.</p> <h2>Engage the Customer First</h2> <p>Customers receiving upsell messages during a conversation with Alexa only have the length of the upsell message and an open mic of eight seconds to understand what you’re offering and how it benefits their experience, then make a decision to say “yes” or “no.” That’s a heavy cognitive load for them to carry. A customer can’t make this decision without first becoming acquainted with your skill.<br /> <br /> The best way to do this is to give the customer what they asked for first, wherever possible. If they asked your skill when the game is on, don’t make a customer sit through a subscription offer to listen to live games before answering their simple question (or worse, never answering at all). The customer should experience the benefit of your skill first. For example, the <a href="https://www.amazon.com/TuneIn-Live/dp/B075SMLSDS/ref=sr_1_1?keywords=tunein+live&amp;qid=1570571164&amp;s=digital-skills&amp;sr=1-1" target="_blank">TuneIn Live</a> skill will answer basic questions about your favorite sports team’s schedule before informing you you’ll need a subscription to listen. In our hypothetical trivia game – Seattle Super Trivia – this means we’re going to let the customer play their first game without mentioning in-skill purchases.</p> <p>Here is an example of what <strong>NOT </strong>to do:<br /> <iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/VNtNbrvg6UU" width="640"></iframe></p> <h2>Offers Should Be Simple</h2> <p>Upsell messages ask the customer to process a lot of information, and we’ll want to reduce their cognitive load wherever we can. When a customer is confused, it’s just easier for them to say “no” to whatever is being asked of them. This means reducing the number of steps it takes to purchase and, for skills that offer more than one ISP, only offering one product at a time. For Seattle Super Trivia, that means we won’t try to sell the player a subscription, a one-time purchase, and hints at the same time.<br /> <br /> Let's take look at an example of what <strong>NOT</strong> to do:<br /> <br /> “Welcome to Seattle Super Trivia. It’s OK, you’ve probably never heard of it. Think you know Seattle? Think again, transplant. I’m about to school you! Before we get started, you can get a subscription to Seattle Super Trivia to get more trivia questions every day, purchase one of 50 mega-trivia packs, or stock up on hints before you do trivia battle. What would you like to do? Subscribe? Stock up on hints? Or get a pack?”<br /> <br /> That was overwhelming. We threw a lot of information at the customer before they even got a chance to understand what the skill does. What are you likely to say to that prompt?</p> <p><strong>Complex:</strong></p> <p><iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/Zcp9cOWooZM" width="640"></iframe></p> <p><strong>Simple:</strong></p> <p><iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/JbB8lCKKa94" width="640">&lt;br /&gt; </iframe></p> <h2>Be Relevant to Be Trusted</h2> <p>Offer an in-skill purchase when your customer will be most inclined to say “yes.” If you have multiple ISPs like our trivia skill, you’ll want to consider which to offer a customer first. For our trivia skill, we can offer a pack first since it’s an inexpensive, low-commitment purchase for those who’ve only played a couple times. If that customer returns to the skill and finishes our daily game of five questions several days in a row, that’s an indicator it’s a good time to offer them the subscription.<br /> <br /> While the scope of your skill might affect when a customer is most likely to agree to a purchase, some milestones in their experience to consider surfacing upsells might include:</p> <ul> <li>A customer has run out of free content</li> <li>A customer has reached a point in the experience where it may be enhanced - but not blocked - by making a specific kind of purchase</li> <li>A customer has asked directly for content that requires payment</li> <li>When a customer returns to the skill for the first time since additional paid features were added</li> <li>When a customer has engaged with the skill successfully several times after declining the first upsell offer</li> </ul> <p>Some inopportune times to surface an upsell might include:</p> <ul> <li>The first time the customer uses your skill</li> <li>The customer has asked the skill to stop, quit, or exit</li> <li>The customer has not recently had a positive interaction with the skill, such as after hitting several errors or not completing their primary task</li> <li>The customer has recently purchased from the skill and hasn’t used their purchase</li> <li>The customer has recently declined to purchase from the skill</li> </ul> <h2>Don’t Mislead, Confuse, or Disrupt</h2> <p>Don’t pull a “bait and switch” on your customers. They should clearly understand what kind of content they can access for free, and what content is “premium.” At the end of a round of Seattle Super Trivia, we’re not going ask our player if they want to play more trivia (of course they do!) and then tell them they can’t do that without a purchase:<br /> <br /> Skill: Thanks for playing today’s round of Seattle Super Trivia. Want to play a another round?<br /> Customer: Yes<br /> Skill: Sorry, you’ll need a subscription to Seattle Super Trivia to play the daily bonus round. Would you like to learn how to subscribe?<br /> Customer: No!</p> <p>That was frustrating wasn't it?! Make sure you avoid doing this at all costs. Now let's take a moment to see what that would look like between two human conversational partners.</p> <p><iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/y7U6h8K3jK8" width="640"></iframe></p> <p>From now on, my poor player is going to be wondering when I’ll offer them landmines like that again, nervous every time they agree to an option that I’ll try to upsell them.<br /> <br /> In the spirit of the discussion above about reducing friction and not trying to sell to someone we haven’t yet successfully interacted with (or haven’t even “met”), we don’t want to disrupt the experience they were expecting to get when they invoked our skill. In Seattle Super Trivia, we won’t stop customers with an upsell after agreeing to start their game. Let's make sure we <strong>AVOID</strong> the following:<br /> <br /> “Ok, let’s continue your Seattle Superstars Trivia Pack. Before we get started, did you know we also offer 49 more trivia packs about history, animals, and music? Want to learn about more packs?”</p> <h2>Don't Upsell Too Often… or Too Little</h2> <p>When a customer declines to make a purchase, we’ll now have to decide when to offer a purchase again. Customers shouldn’t be shut out from purchases forever after their first “no,” but we’ll have to be contextual in the way we decide to make an offer again. Whatever upsell “trigger” we set, we’ll need to validate that mechanism. For example:</p> <ul> <li>If a skill offers a resource as a consumable that will be relatively scarce, a trigger to upsell when there is a low balance of such items is likely to deliver the message too often. Since Seattle Super Trivia only gives one hint a day for free, and offers a purchase of only three hints, we don’t want to set an upsell to trigger every time the customer only has one hint left: They’d be hearing upsells too often!</li> <li>If a skill upsell is set to be delivered every time the player is out of free content, they may hear the upsell as the welcome message every time they open the skill. Once a player finishes the Seattle Super Trivia daily game, we’ll want to offer the upsell again if they come back the same day, but if they decline that upsell, they shouldn’t hear that message over and over each time they open the skill until the next daily game is available.</li> <li>If a skill will surface an upsell after every trivia game the customer completes, the skill will deliver an annoying number of upsell messages if each trivia game is only three questions, while the skill may not deliver enough upsells if there are 100 questions per game.</li> </ul> <p>Typical upsell intervals used by developers who have implemented ISPs include:</p> <ul> <li>Once every 24-72 hours</li> <li>After three consecutive days of play</li> <li>Once every set number of sessions</li> </ul> <p>Consider a different, longer interval if a customer has already declined an upsell from your skill.<br /> <br /> Now that we’ve decided what circumstances will trigger an upsell message and where, it’s time to write the message itself. But what do we write? How do we convince customers in just a breath’s worth of dialog? Stay tuned for Part 3 of this series, where we’ll discuss how to write an effective upsell!<br /> &nbsp;</p> /blogs/alexa/post/0574e4b3-3b0a-4d89-b153-f501d1b15d31/sakananojikan-interview Alexa Developerスキルアワード2019キッズ部門受賞「サカナノジカン」スキル開発インタビュー Chisato Hiroki 2019-10-08T04:00:07+00:00 2019-10-08T04:00:07+00:00 <p>Alexa Developerスキルアワード2019キッズ部門を受賞した『サカナノジカン』を開発した國川雅司氏、 南島康一氏、小川麟太郎氏は、6月9日に行われたスキルアワードハッカソンで出会い、結成されたチームです。スキルアワードを通した経験や、スキル開発の工夫などを伺いました。</p> <p>Alexa Developerスキルアワード2019キッズ部門を受賞した『<a href="https://www.amazon.co.jp/dp/B07W1J54Q9/ref=as_at?tag=rsaf-22&amp;linkCode=as2&amp;">サカナノジカン</a>』を開発した國川雅司氏、 南島康一氏、小川麟太郎氏は、6月9日に行われたスキルアワードハッカソンで出会い、結成されたチームです。スキルアワードを通した経験や、スキル開発の工夫などを伺いました。</p> <p><strong>國川雅司氏</strong> (クラウド技術 エンジニア )</p> <p><strong>南島康一 氏 </strong>(株式会社カラーズ サーバーサイドエンジニア)</p> <p><strong>小川麟太郎氏</strong> (電通デジタル クリエーティブプランナー/アートディレクター)</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/Sakananojikan_Blog._CB1570501154_.jpg" /></p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>なぜハッカソンに参加しようと思ったのですか?</strong></p> <p>國川:シンプルに楽しそうだな、と思って参加しました。デザイナーに出会えたらいいな、くらいの気持ちでいました。</p> <p>南島:これまでハッカソンに参加したことがなかったのですが、Alexaハッカソンは、参加にあたり敷居が低かったので、思い切って参加してみようと思いました。スキルアワードにも興味があったので、一石二鳥になるかなとも思いました。</p> <p>小川:普段業務で、VUI関連の調査やプランニングをしていて、VUIの生かし方についてもっと知ることができればと思っていました。また、Alexaで何が実現できるかをエンジニアと一緒に考え、試してみる機会がなかったこともあります。ハッカソンに参加し、作品を好きにアレンジしながら、どうしたら面白くなるかを研究してみたいと思いました。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> ハッカソンでは、どのように</strong><strong>チームを作ったのですか?</strong></p> <p>國川:僕は、あまりそこは上手ではなくて……(笑)</p> <p>小川:國川さんのアイデアを見て、面白いと思い、自分から声を掛けました。個人のアイデアをみんなで投票し、みんなで自由にマッチングしていくハッカソンの仕組みは良かったと思います。</p> <p>南島:自分で作成してもいいかな、と思っていたのですが、せっかくハッカソンにきてみたし、アイデアをみてちょっとやってみようと思い、チームに参加してみました。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> スキルのアイデアは</strong><strong>初めからあったのでしょうか?</strong></p> <p>國川: Echo Spotの画面を見ていて、金魚鉢のように見えたのが発端で、水槽に見立てたスキルを作ってみたいなと思いました。キッズ向けのスキルにしようと決めたのは、ハッカソン中です。</p> <p>南島:初めは課金メインで考えていたのですが、キッズは課金ができないということから、課金をとるか、キッズで行くかを考えて、キッズで行こうと決定しました。</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/IMG_6676._CB1570501850_.jpg" style="display:block; height:420px; margin-left:auto; margin-right:auto; width:560px" /></p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>より面白いスキルにするために、どのような工夫をしましたか?</strong></p> <p>國川:時間が経つと、“サカナの状態が変わる”という点にこだわりました。お腹がすいたり、水槽が汚れたり、サカナが遊んで欲しがったり、など、開くたびに新しい発見があるように工夫しました。また、10日間経つと、サカナが成魚に変わる、といった遊び心を加えました。</p> <p>小川:サカナのパターンは、ベースが12枚くらいあり、色バリエーションがあり、動画があり、画像があり、ボツ案もあり、かなりの数を作成しました。</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/IMG_6669._CB1570501850_.jpg" style="display:block; height:431px; margin-left:auto; margin-right:auto; width:574px" /></p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>VUI</strong><strong>のデザインはどのように行いましたか? </strong></p> <p>小川:序盤はフローチャートを使って、整理を行いました。話しことばやバリエーションは盛り込まず、インテントの整理や進め方のみにフォーカスしました。その後、Alexa(話者)のパーソナリティーを設定しました。どういった人から子どもに話しかけているのか、話者が言うこと、言わないことのルールを設定し、シナリオで切って会話を書き起こしていきました。会話を膨らませ、初回起動時、毎日繰り返して使う時、などに分けて会話を作成しました。</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/IMG_6678._CB451518903_.jpg" style="display:block; height:660px; margin-left:auto; margin-right:auto; width:574px" /></p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>普段の仕事を今回のスキル開発の役割でどのように生かすことができましたか?</strong></p> <p>國川:普段はインフラ側の仕事をしていて、デザイナーと一緒に仕事をする機会が全くないので、デザイナー側から出てくるものが、とても新鮮でした。自分が出したアイデアをデザイナーがブラッシュアップし、それをもう一度自分が作るといった作業です。もともとあったアイデアをさらに洗練させてくれたことに、感動しました。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>ハッカソン参加後は、どのように開発を進めましたか?</strong></p> <p>小川:かなり初期の段階でコンセプトボートを作成しました。サカナノジカンの世界感や、このように使ってほしい、こういったターゲットに使ってほしいといった部分を1枚にまとめたのが良かったです。この1枚に、スキルの進め方、サカナをお世話した時のリアクションなどをすべてまとめ、これを実現するには各自が何をすべきかの分担を明確化することができました。また、この工程は削らないと間に合わない、などの見通しを立てることもできました。</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/IMG_6660._CB1570501850_.jpg" style="display:block; height:507px; margin-left:auto; margin-right:auto; width:380px" /></p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>ドット絵にした理由は何ですか?</strong></p> <p>小川:工数的な部分もありましたが、一番はターゲットを3〜4歳に設定したことです。この年齢層の子どもが生き物だとちゃんと認識でき、かつ色彩が楽しめるビジュアルを目指す場合、実物に近い見た目のものよりも、ドット絵にデフォルメすることで、世界観に没頭してもらえると考えました。応募した時は、時間的な制約もあり、青だけで勝負したのですが。最終的には、赤、青、黄色の3色で展開し、育っていくサカナがそれぞれ違う見た目になっています。子どもたちが“私のは丸っこい”“私のはとんがっている”のような個性を出し、楽しんでもらえる世界を思い描いて作成していました。</p> <p>國川:はじめドットの画像を見た時は、オーと思いました(笑)ハッカソンの時とはかなり変わっていたので。</p> <p><img alt="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F308709%2Ff8236d86-4ed2-9b81-7b4c-fb5a0154edee.png?ixlib=rb-1.2.2&amp;auto=compress%2Cformat&amp;gif-q=60&amp;s=4c711614ad1b263bd2c9d525bb96ba66" src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F308709%2Ff8236d86-4ed2-9b81-7b4c-fb5a0154edee.png?ixlib=rb-1.2.2&amp;auto=compress%2Cformat&amp;gif-q=60&amp;s=4c711614ad1b263bd2c9d525bb96ba66" style="display:block; height:309px; margin-left:auto; margin-right:auto; width:529px" /></p> <p>小川:絵は、みんなに原画を見せて、男の子だったら?女の子だったら?変わったものが好きな子だったら?のようにパターンをいくつか作成し、話し合いながら決めていきました。</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/alexa-skills-kit/jp/IMG_6673._CB1570502035_.jpg" style="display:block; height:390px; margin-left:auto; margin-right:auto; width:521px" /></p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>ハッカソンに参加してよかったことは?</strong></p> <p>小川:初ハッカソンだったので、かなり緊張しながら参加したのですが、自分では思いつくことのできないコアアイデアを生み出せたことが大きかったです。また、仕事の合間の短い時間の中で、お互い刺激し合いながら、スケジュールを切って開発・制作を進められたのは、すごく良い経験でした。</p> <p>南島:チームと出会えたこと。新しい発見もありましたし、ハッカソン自体が好きになるきっかけになりました。また、仕事外の仲間と出会い、モノを作る体験をすることができました。ビジネスと趣味の中間地点に位置しているため、ほどよい緊張感の中で楽しみながら、心地よく制作をすることができました。</p> <p>國川: Alexaが好きな友人に出会えたこと。またアイデア自体は持っていたけれど、自分ひとりでは、サカナをデザインすることが出来なかったため、仲間に出会うことができてよかったです。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>開発で苦労したポイントは?</strong></p> <p>南島:デザインでやりたかったことを、そのまま実現できない部分がありました。具体的には、ウエイクワード無しに、Alexaの待機中にサカナや海藻がゆらゆら揺れたりといったことは、実現できませんでした。※詳しい開発のお話は、南島氏の<a href="https://qiita.com/ikegam1/items/2cb254afef9d87420150">ブログ</a>をご覧ください。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>開発するにあたり、今後どのような機能を期待していますか?</strong></p> <p>南島:発話待ちで、アニメーションを動かせるようになってほしいです。</p> <p>小川:アイドル状態を自分で設定できるようになったら、影響が大きいなと思います。アートを飾るといった使い方もできるようになるのでは?スキルを動かし続けることができれば、更に魅力的になるように思います。<a href="https://developer.amazon.com/ja/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html">SSML</a>の調整ももう少し、自然になるといいですね。</p> <p>南島:<a href="https://developer.amazon.com/ja/docs/alexa-presentation-language/apl-avg-format.html">AVG</a>をもっと簡単に使えるようにしてほしいです。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> スキル</strong><strong>アワードに参加し、変化したことはありますか?</strong></p> <p>國川:社外の方の経験や知識を共有してもらえる場はなかなかありませんが、今回、個人としてすごく成長することができました。技術的なアドバイスを受けることが出来たり、デザイナーと一緒に仕事をすることが、とてもいい経験になり、楽しい緊張感の中で、作品を作ることができました。</p> <p>小川:この領域の仕事を、もっとやってみたい、もっといろんな人を絡ませたい、といったモチベーションがわいてきました。</p> <p>南島:仕事でも、スマートスピーカーで何かできるのではないか、といった可能性を感じるようになりました。一方、今回の企画は仕事外なので、いい意味で損得勘定なく力を発揮することができたのもよかった点です。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>今後の活動について、どう考えていますか?</strong></p> <p>南島:サカナノジカンは、無理やり課金に紐づけようとすると、コンセプトが歪んでしまう可能性があるため、無理をして課金を付けようとは思っていません。</p> <p>小川:このチームで、何かできるかを考えています。新しいアイデア出しをオンラインで行っています。</p> <p>&nbsp;</p> <p><strong>―</strong><strong> </strong><strong>今度アワードやハッカソンに参加する人達に向けてのアドバイスを教えてください</strong></p> <p>南島:成功要因はチームワークだったと思います。「3人」という人数構成も良かったです。</p> <p>南島、小川:ハッカソンは、参加して損はないから行ってみるといいと思います。勉強になることは非常に多かったです。絶対に何かしら得るものがあります。</p> <p>國川、南島、小川:それぞれが、お互いを尊重しながら、コンセプトを貫き通すことができたのが、勝因でしたね。</p> <p>&nbsp;</p> <p><strong>■ ぜひ「サカナノジカン」チーム作成の紹介動画もご覧ください⇒<a href="https://www.youtube.com/watch?reload=9&amp;v=nYXrQD8EBxA&amp;feature=youtu.be">動画を見る</a></strong></p> /blogs/alexa/post/cf65c68e-f3df-475e-939d-4ea2771b20b7/tell-your-customers-they-can-now-invoke-your-skill-from-routines Tell Your Customers They Can Now Invoke Your Skill from Routines Leo Ohannesian 2019-10-03T15:58:52+00:00 2019-10-09T22:04:29+00:00 <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/blog_routine-skills_954x240@2x.png._CB451173301_.png" /></p> <p>Today, we are excited to announce that users can invoke custom skills from <a href="https://www.amazon.com/gp/help/customer/display.html?nodeId=GCCRGDPHL7L9W7TJ" target="_blank">Alexa routines.</a></p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/blog_routine-skills_954x240@2x.png._CB451173301_.png" style="height:480px; width:1908px" /></p> <p><em><strong>Editor's Note: Custom skills in routines is currently available in the US and will become available for all locales in the coming weeks.&nbsp;</strong></em></p> <p>Today, we are excited to announce that users can invoke custom skills from <a href="https://www.amazon.com/gp/help/customer/display.html?nodeId=GCCRGDPHL7L9W7TJ" target="_blank">Alexa routines.</a> Alexa routines are an easy way for Alexa to perform a series of actions at the same time, in a certain order. A routine can be triggered from a custom utterance or something else, like an alarm going off. This is a great opportunity to engage your customers and tell them about how they can routinely use your skills – whether it’s during their morning ritual, when they’re getting ready for bed, or when it’s party time!</p> <p>Routines are a great fit for skill use cases which contain long form audio, such as sleep or relaxation sounds, or for skills that have frequent content updates, such as daily fact skills.</p> <p>Activating custom skills from routines is <a href="https://alexa.uservoice.com/forums/906892-alexa-skills-developer-voice-and-vote" target="_blank">the top voted item on&nbsp;our Feature Request site</a>, and we want to let you know that your voice has been heard. Please keep voting and sharing new ideas to make Alexa smarter, better, and easier to develop for.</p> <h2>Tell Your Customers About Routines</h2> <p>When your customers include your skill into routines, you get the added benefit of routine skill usage, and they get the benefit of conveniently launching your skill with little effort. There is nothing you need to do to make your skill eligible to be used in routines. The only requirement is that your skill be enabled on one of the customer’s Alexa devices. All enabled skills appear in the Alexa Mobile App, where a customer can set a routine to invoke your skill. Below is a snapshot of the customer experience:</p> <p><img alt="" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/Picture1(1).png._CB451173163_.png" /></p> <p>There are many ways to get in touch with your customers to inform them about this new way to invoke your skill, whether it's by email, social media channels, or wherever you have built an existing user community.</p> <h2>Customer Retention and Engagement</h2> <p>Customer engagement stemming from routines is a great way to have repeat usage of your skill. You can keep track of customer retention by <a href="https://developer.amazon.com/docs/devconsole/measure-skill-usage.html#skill-metrics" target="_blank">visiting the Analytics tab in the Alexa Developer Console.</a> Customer traffic stemming from routines counts towards <a href="https://developer.amazon.com/en-US/alexa/alexa-skills-kit/rewards" target="_blank">Alexa Developer Rewards</a>. It is important to keep your skill content up to date and habitually refreshed, especially if customers will be interacting with your skill routinely. Customers that come back to your skill often will expect to interact with new content when they do.</p> <p>Tell your customers about custom skills in routines and start seeing increased repeat usage of your skills today!</p> /blogs/alexa/post/c7355c4c-2137-4fc9-9780-1e85c67f644c/alexa-voice-service-expands-to-brazilian-portuguese-with-devices-from-intelbras-bose-sony-and-lg Alexa Voice Service Expands to Brazilian Portuguese, with Devices from Intelbras, Bose, Sony, and LG Adam Vavrek 2019-10-03T15:47:46+00:00 2019-10-03T15:56:27+00:00 <p><a href="https://developer.amazon.com/blogs/alexa/post/c7355c4c-2137-4fc9-9780-1e85c67f644c/alexa-voice-service-expands-to-brazilian-portuguese-with-devices-from-intelbras-bose-sony-and-lg" target="_self"><img alt="Brazilian Portuguese Amazon Alexa Voice Service" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/auto/Brazil._CB1570117907_.png" style="display:block; height:480px; margin-left:auto; margin-right:auto; width:1908px" /></a></p> <p>Starting October 8, we are expanding Alexa Voice Service capabilities by bringing the Portuguese language to customers across Brazil.</p> <p><img alt="Brazilian Portuguese Amazon Alexa Voice Service" src="https://m.media-amazon.com/images/G/01/mobile-apps/dex/alexa/auto/Brazil._CB1570117907_.png" style="display:block; height:480px; margin-left:auto; margin-right:auto; width:1908px" /></p> <p>Starting October 8, we are expanding Alexa Voice Service capabilities by bringing the Portuguese language to customers across Brazil. Customers can ask Alexa for the weather, get new food recipes, control smart home devices, listen to music, hear the news, and more – hands-free. Device makers can now access the new Brazilian Portuguese language models using AVS APIs, adding support for another language to their Alexa Built-in products.</p> <h2>Alexa Built-In Products Expanding to Brazil</h2> <p>We’re thrilled about the device makers that have announced plans to bring Portuguese to their products in Brazil, including:</p> <p><strong>Intelbras</strong>: Intelbras is launching Alexa into its Izy Speak! and Izy Speak! mini smart speakers.&nbsp;</p> <p><strong>Bose</strong>: Bose Noise Cancelling Headphones 700 and Bose Home Speaker 300 will now support Brazilian Portuguese.</p> <p><strong>Sony</strong>: Sony customers in Brazil are now able to use Amazon Alexa in the latest headphones. With forthcoming software updates, customers will also be able to use Amazon Alexa on its newest 2019 TVs.</p> <p><strong>LG</strong>: LG Electronics is adding Alexa support to over 30 LG TVs, including its OLED and NanoCell models.</p> <p>Device makers can learn more about AVS, design best practices, and available development tools on the AVS Developer Portal <a href="https://developer.amazon.com/alexa-voice-service/international/" target="_blank">here</a>. For more information on products with Alexa Built-in available in Brazil, visit <a href="https://www.amazon.com.br/alexaintegrada" target="_blank">here</a>.</p> /blogs/alexa/post/6963ff40-6e62-4d6a-975d-fea600affa46/amazon-releases-new-public-data-set-to-help-address-dinner-party-problem Amazon Releases New Public Data Set to Help Address “Cocktail Party” Problem Larry Hardesty 2019-10-01T13:13:57+00:00 2019-10-01T16:48:55+00:00 <p>Recorded in the lab during simulated dinner parties, a new data set should aid the development of systems for separating&nbsp;speech signals in reverberant rooms with multiple speakers.</p> <p><em><sup>Maarten Van Segbroeck, an applied scientist in the Alexa International group and first author on the associated paper, cowrote this post with Zaid Ahmed.</sup></em></p> <p>Amazon today announced the <a href="https://s3.amazonaws.com/dipco/DiPCo.tgz" target="_blank">public release</a> of a new data set that will help speech scientists address the difficult problem of separating speech signals in reverberant rooms with multiple speakers.</p> <p>In the field of automatic speech recognition, this problem is known as the “cocktail party” or “dinner party” problem; accordingly, we call our data set the Dinner Party Corpus, or DiPCo. The dinner party problem is widely studied: it was, for instance, the subject of the fifth and most recent <a href="http://spandh.dcs.shef.ac.uk/chime_challenge/index.html" target="_blank">CHiME challenge</a> in speech separation and recognition sponsored by the International Speech Communication Association.&nbsp;</p> <p>We hope that the availability of a high-quality public data set will both promote research on this topic and make that research more productive.</p> <p>We created our data set with the assistance of Amazon volunteers, who simulated the dinner-party scenario in the lab. We conducted multiple sessions, each involving four participants. At the beginning of each session, participants served themselves food from a buffet table. Most of the session took place at a dining table, and at fixed points in several sessions, we piped music into the room, to reproduce a noise source that will be common in real-world environments.</p> <p>Each participant was outfitted with a headset microphone, which captured a clear, speaker-specific signal. Also dispersed around the room were five devices with seven microphones each, which fed audio signals directly to an administrator’s laptop.<br /> &nbsp;</p> <p><img alt="dinner_party_corpus_v1.jpg" src="https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/dinner_party_corpus_v1.jpg._CB452790362_.jpg?t=true" style="display:block; height:396px; margin-left:auto; margin-right:auto; width:250px" /></p> <p style="text-align:center"><em><sub>The layout of the space in which we captured audio from simulated dinner parties. The numbered circles indicate the placement of the five microphone arrays.</sub></em></p> <p>The data set we are releasing includes both the raw audio from each of the seven microphones in each device and the headset signals. The headset signals provide speaker-specific references that can be used to gauge the success of speech separation systems acting on the signals from the microphone arrays. The data set also includes transcriptions of the headset signals.</p> <p>The division of the data into segments with and without background music enables researchers to combine clean and noisy training data in whatever way necessary to extract optimal performance from their machine learning systems.</p> <p>The DiPCo data set has been released under the <a href="https://cdla.io/permissive-1-0" target="_blank">CDLA-Permissive license</a> and can be downloaded <a href="https://s3.amazonaws.com/dipco/DiPCo.tgz" target="_blank">here</a>. We have also posted a <a href="https://arxiv.org/pdf/1909.13447.pdf" target="_blank">paper</a> detailing the work. DiPCo’s release follows on Amazon’s recent releases of three other public data sets, two for the <a href="https://developer.amazon.com/blogs/alexa/post/ddad5b81-a557-423c-aae4-c55c6715f4cf/teaching-alexa-to-follow-conversations" target="_blank">development</a> of <a href="https://developer.amazon.com/blogs/alexa/post/885ec615-314f-425f-a396-5bcffd33dd76/amazon-releases-data-set-of-annotated-conversations-to-aid-development-of-socialbots" target="_blank">conversational AI</a> systems and the <a href="https://developer.amazon.com/blogs/alexa/post/eaed4d64-c7af-4587-8241-7a006db9b19b/amazon-helps-launch-workshop-on-automatic-fact-verification" target="_blank">other</a> for fact verification.</p> <p><em>Zaid Ahmed is a senior technical program manager in the Alexa Speech group.</em></p> <p><a href="https://arxiv.org/pdf/1909.13447.pdf" target="_blank"><strong>Paper</strong></a>: “DiPCo — Dinner Party Corpus”</p> <p><a href="https://developer.amazon.com/alexa/science" target="_blank"><strong>Alexa science</strong></a></p> <p><strong>Acknowledgments</strong>: Maarten Van Segbroeck, Roland Maas</p> <p><strong>Related</strong>:</p> <ul> <li><a href="https://s3.amazonaws.com/dipco/DiPCo.tgz" target="_blank">DiPCo data set</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/ddad5b81-a557-423c-aae4-c55c6715f4cf/teaching-alexa-to-follow-conversations" target="_blank">Teaching Alexa to Follow Conversations</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/eaed4d64-c7af-4587-8241-7a006db9b19b/amazon-helps-launch-workshop-on-automatic-fact-verification" target="_blank">Amazon Helps Launch Workshop on Automatic Fact Verification</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/94539149-2d4f-4033-9a7d-7d77ae87b1f3/using-wake-word-acoustics-to-filter-out-background-speech-improves-speech-recognition-by-15" target="_blank">Using Wake Word Acoustics to Filter Out Background Speech Improves Speech Recognition by 15%</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/ce8c72da-4f28-43d2-b9ea-59f3abe50049/signal-processor-improves-echo-s-bass-response-loudness-and-speech-recognition-accuracy" target="_blank">Signal Processor Improves Echo’s Bass Response, Loudness, and Speech Recognition Accuracy</a></li> <li><a href="https://developer.amazon.com/blogs/alexa/post/c47b5538-732c-4cb9-980f-14d79f91c6b9/joint-training-on-speech-signal-isolation-and-speech-recognition-improves-performance" target="_blank">Joint Training on Speech Signal Isolation and Speech Recognition Improves Performance</a></li> </ul> /blogs/alexa/post/c2d062ff-17b3-47f6-b256-f12c7e20f594/congratulations-alexa-skill-builders-100-000-skills-and-counting Celebrating 100,000 Alexa Skills -100,000 Thank Yous to You June Lee 2019-09-26T16:14:20+00:00 2019-09-26T16:28:50+00:00 <p><img alt="" src=" https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/1500x450_Still0.png._CB452893153_.png" /></p> <p>You've done it! Together, the Alexa skill builder community has now published more than 100,000 Alexa skills. We’re thrilled to celebrate this milestone with you and want to thank you for making this possible.</p> <p><img alt="" src=" https://m.media-amazon.com/images/G/01/DeveloperBlogs/AlexaBlogs/default/1500x450_Still0.png._CB452893153_.png" /></p> <p>You've done it! Together, the Alexa skill builder community has now published more than 100,000 Alexa skills. We’re thrilled to celebrate this milestone with you and want to thank you for making this possible.</p> <p>Skill builders come from all walks of life - from those who have never written a line of code, to those with software coding experience, and the companies who are integrating Alexa with their product lines and brands. You have come up with diverse skill ideas and helped customers make Alexa a part of their daily lives whether they are looking for the local weather and traffic, light controls at their homes, productivity tools, entertainment, fitness, education, or shopping.</p> <p style="text-align:center"><iframe allowfullscreen="" frameborder="0" height="360" src="//www.youtube.com/embed/n-6bxaztZRU" width="640"></iframe></p> <h2>Growing Demand for Skills and Increasing Device Selection - Growth in Opportunities for Developers</h2> <p>As developers build more Alexa skills, customers are continuing to use skills more as part of their daily lives. Compared to 2018, customer engagement with skills has doubled in 2019. This growth occurs across a broad range of skills, and some popular categories like Productivity, Education &amp; Reference, and Kids are experiencing triple digit growth so far in 2019.</p> <p>We are also continuing to release the selection of Alexa enabled devices – including <a href="https://blog.aboutamazon.com/devices/amazon-devices-event-september-2019">the newest devices</a> that were announced yesterday such as Echo Show 8 and Echo Buds – to help customers engage with Alexa in more places in their homes, cars, and while on the go. And to help you reach more customers through these devices, we are continuing to release tools that help you bring skill ideas to life. Make sure to check out <a href="https://developer.amazon.com/blogs/alexa/post/e4e576c1-21e1-45c1-8086-70a50b78e172/announcing-new-alexa-skills-kit-capabilities-supporting-the-latest-echo-devices-more-languages-and-personalization">the latest developer tool releases</a> from our event yesterday.</p> <h2>100,000 Thanks to You – Give a Shout Out to Your Favorite Skill!</h2> <p>We want to say special thanks to our Alexa skill builders! This milestone was made possible all thanks to your imagination, innovation, and hard work. Thank you for continuing to build enhanced skill experience, and being the pioneers of voice.</p> <p>Please join our celebration and give a special shoutout to your favorite Alexa skills on social media! Repost our posts (<a href="http://bit.ly/2nwSSR7">twitter</a>, <a href="http://bit.ly/2lSfRpw">linkedin</a> <a href="http://bit.ly/2nA2U47">facebook</a>, <a href="http://bit.ly/2ln2HQT">youtube</a>) and let everyone know what your favorite skill is and why, and use the hashtag #ILoveSkills.</p>