YouTube's Offline Playback feature was first introduced alongside Music Key back in November, finally giving people a way to store a (limited) selection of videos for trips into areas with poor connectivity, or just to avoid using up capped data plans. While it has remained mostly unchanged in the last 8 months, the latest update finally brings a few modifications. The interface is now a bit more informative and uniform, and there's a new low-quality option (which is actually a good thing). A teardown also revealed some big improvements to the voice command interface that has been in the works for a while.
What's New
It appears that the only notable changes in this update were exclusive to the interface for Offline Playback, and specifically just to the download dialog. There are a few modifications worth looking at. The first is an updated naming convention for video quality, which abandons the "common" names (i.e. Normal and HD). This makes the options much more visually appealing since they won't be displayed with different lengths in a jagged stack. YouTube's engineers are also off the hook for making up (and translating) those common names for the various quality levels that may be added in the future. Of course, this means slightly less meaningful labels for users that don't naturally comprehend video quality levels; but this is a pretty easy concept for people to adapt to, so it shouldn't be a problem.
Each quality level is now also adorned with its size printed on the right side of the dialog. There's no need to play it safe by picking small videos because we're afraid of the impact of a larger one, we now know exactly how much space we're committing to. But if I can make one suggestion to Google, it's that the dialog should also let us know how much space we have available.
The final addition comes in the form of a new option for offline quality: 144p. It goes without saying that video at such a low resolution is visually terrible to watch, even on a small phone screen; however, it has the advantage of consuming very little space – about half the size of a 360p video. This is a good option for anybody that doesn't care much about video, but needs to have the audio track, which describes a lot of music and podcast listeners. An APK Teardown back in May revealed that an audio-only option is due to appear, but it seems to still be on hold, for now. In the meantime, YouTube is making the point that 144p video may have a place on hardware other than smartwatches.
Teardown
Disclaimer: Teardowns are necessarily speculative and usually based on incomplete evidence. It's possible that the guesses made here are totally and completely wrong. There is always a chance that details may change or plans may be cancelled prior to the launch of a new feature discovered in a teardown. Much like rumors, nothing is certain until it's officially announced.
Painless Google Now Voice Commands
A couple of weeks ago, I posted a Teardown examining an ongoing integration with Google Now voice commands that, when launched, will allow users to speak to YouTube for basic playback control. If any criticism could be leveled at the given samples, it's that the phrasing options were painfully limited. I would compare them to the command phrases we had to learn in the early days of Android, when instructions like "navigate to <address>" would only lead to Maps if they were precisely spoken, otherwise Google might return a meaningless search results page.
The new YouTube update has taken some bold steps forward in flexible phrasing. No longer are the commands locked into specific words, but instead appear as a fairly extensive vocabulary that covers almost all of the natural ways people might speak their intent. In earlier versions, something like skipping to the next video in a playlist could only be achieved with the commands "next" or "play next," both of which were spelled out exactly like that. The new structure allows for semi-complicated sentences that recognize the use of verbs, nouns, and adjectives.
Sentence Structures
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>android.intent.action.SEARCH</Intent>
<Example>$VerbSearch:verbsearch $SchemaOrg_Text:query</Example>
<Example>$NounSearchItems:nounsearchitems $SchemaOrg_Text:query</Example>
<DiscoverabilityExample>search for hunger games</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.CLOSE_PLAYER</Intent>
<Example>$VerbClose:verbclose $NounPlayer:nounplayer</Example>
<Example>$VerbClose:verbclose</Example>
<DiscoverabilityExample>close player</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.FULL_SCREEN</Intent>
<Example>$VerbModeChange:verbmodechange $NounFullScreen:nounfullscreen</Example>
<Example>$VerbModeChange:verbmodechange $NounFullScreen:nounfullscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbPlay:verbplay $NounFullScreen:nounfullscreen</Example>
<Example>$VerbPlay:verbplay $NounFullScreen:nounfullscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbPlay:verbplay $NounVideo:nounvideo $NounFullScreen:nounfullscreen</Example>
<Example>$VerbPlay:verbplay $NounVideo:nounvideo $NounFullScreen:nounfullscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbPlay:verbplay $NounVideo:nounvideo in $NounFullScreen:nounfullscreen</Example>
<Example>$VerbPlay:verbplay $NounVideo:nounvideo in $NounFullScreen:nounfullscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$NounFullScreen:nounfullscreen</Example>
<Example>$NounFullScreen:nounfullscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbEnlarge:verbenlarge</Example>
<Example>$VerbEnlarge:verbenlarge $NounVideo:nounvideo</Example>
<Example>$VerbEnlarge:verbenlarge $NounVideo:nounvideo to $NounFullScreen:nounfullscreen</Example>
<Example>$VerbEnlarge:verbenlarge $NounVideo:nounvideo to $NounFullScreen:nounfullscreen</Example>
<Example>$VerbEnlarge:verbenlarge to $NounFullScreen:nounfullscreen</Example>
<DiscoverabilityExample>fullscreen</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.MINI_SCREEN</Intent>
<Example>$VerbModeChange:verbmodechange $NounMiniScreen:nounminiscreen</Example>
<Example>$VerbModeChange:verbmodechange $NounMiniScreen:nounminiscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbModeChange:verbmodechange $NounPlayer:nounplayer $NounMiniScreen:nounminiscreen</Example>
<Example>$VerbModeChange:verbmodechange $NounPlayer:nounplayer $NounMiniScreen:nounminiscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbPlay:verbplay $NounPlayer:nounplayer $NounMiniScreen:nounminiscreen</Example>
<Example>$VerbPlay:verbplay $NounPlayer:nounplayer $NounMiniScreen:nounminiscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$NounMiniScreen:nounminiscreen</Example>
<Example>$VerbMinimize:verbminimize</Example>
<Example>$VerbMinimize:verbminimize $NounVideo:nounvideo</Example>
<Example>$VerbMinimize:verbminimize $NounPlayer:nounplayer</Example>
<Example>$VerbMinimize:verbminimize $NounPlayer:nounplayer to $NounMiniScreen:nounminiscreen</Example>
<Example>$VerbClose:verbclose $NounFullScreen:nounfullscreen</Example>
<DiscoverabilityExample>miniscreen</DiscoverabilityExample>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.NORMAL_SCREEN</Intent>
<Example>$VerbModeChange:verbmodechange $NounNormalScreen:nounnormalscreen</Example>
<Example>$VerbModeChange:verbmodechange $NounNormalScreen:nounnormalscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbModeChange:verbmodechange $NounPlayer:nounplayer $NounNormalScreen:nounnormalscreen</Example>
<Example>$VerbModeChange:verbmodechange $NounPlayer:nounplayer $NounNormalScreen:nounnormalscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$VerbPlay:verbplay $NounPlayer:nounplayer $NounNormalScreen:nounnormalscreen</Example>
<Example>$VerbPlay:verbplay $NounPlayer:nounplayer $NounNormalScreen:nounnormalscreen $SuffixModeChange:suffixmodechange</Example>
<Example>$NounNormalScreen:nounnormalscreen</Example>
<DiscoverabilityExample>normalscreen</DiscoverabilityExample>
</Action>
<Action>
<VerbClass>SuspendAction</VerbClass>
<Intent>com.google.android.youtube.voice.PAUSE</Intent>
<Example>$VerbPause:verbpause</Example>
<Example>$VerbPause:verbpause $NounVideo:nounvideo</Example>
<Example>$VerbPause:verbpause $NounPlayer:nounplayer</Example>
<Example>$VerbStop:verbstop $NounPlayer:nounplayer $AdverbPause:adverbpause</Example>
<Example>$VerbStop:verbstop it $AdverbPause:adverbpause</Example>
<Example>$VerbStop:verbstop it</Example>
<Example>$VerbStop:verbstop $AdverbPause:adverbpause</Example>
<Example>$NounVideo:nounvideo $VerbPause:verbpause</Example>
<DiscoverabilityExample>pause</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ResumeAction</VerbClass>
<Intent>com.google.android.youtube.voice.PLAY</Intent>
<Example>$VerbPlay:play</Example>
<Example>$VerbPlay:play $AdverbResumeSuffix:adverbresumesuffix</Example>
<Example>$VerbPlay:play $NounVideo:nounvideo</Example>
<Example>$VerbPlay:play $NounVideo:nounvideo $AdverbResumeSuffix:adverbresumesuffix</Example>
<Example>$VerbPlay:play $AdverbResumeSuffix:adverbresumesuffix $NounVideo:nounvideo</Example>
<Example>$VerbResume:verbresume</Example>
<Example>$VerbResume:verbresume $NounVideo:nounvideo</Example>
<Example>$VerbResume:verbresume $NounVideo:nounvideo $AdverbResumeSuffix:adverbresumesuffix</Example>
<Example>replay $NounVideo:nounvideo</Example>
<Example>replay $NounVideo:nounvideo</Example>
<DiscoverabilityExample>play</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>DeactivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.STOP</Intent>
<Example>$VerbStop:verbstop</Example>
<Example>$VerbStop:verbstop playing</Example>
<Example>$VerbStop:verbstop $NounVideo:nounvideo</Example>
<Example>$VerbStop:verbstop $NounPlayer:nounplayer</Example>
<Example>$VerbStop:verbstop playing $NounVideo:nounvideo</Example>
<Example>$VerbStop:verbstop playing $NounPlayer:nounplayer</Example>
<DiscoverabilityExample>stop</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.NEXT</Intent>
<Example>$VerbSkipLimited:verbskipLimited $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<Example>$VerbSkipLimited:verbskipLimited $AdjectiveNext:adjectivenext $NounVideo:nounvideo</Example>
<Example>$VerbSkipLimited:verbskipLimited $AdjectiveNext:adjectivenext $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<Example>$VerbSkipLimited:verbskipLimited to $AdjectiveNext:adjectivenext</Example>
<Example>$VerbNext:verbnext</Example>
<Example>$VerbNext:verbnext $NounVideo:nounvideo</Example>
<Example>$AdjectiveNext:adjectivenext</Example>
<Example>$AdjectiveNext:adjectivenext $NounVideo:nounvideo</Example>
<Example>$AdjectiveNext:adjectivenext $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<Example>$VerbPlay:verbplay $AdjectiveNext:adjectivenext</Example>
<Example>$VerbPlay:verbplay $AdjectiveNext:adjectivenext $NounVideo:nounvideo</Example>
<Example>$VerbPlay:verbplay $AdjectiveNext:adjectivenext $SuffixList:suffixlist</Example>
<Example>$VerbPlay:verbplay $AdjectiveNext:adjectivenext $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<DiscoverabilityExample>next</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.PREVIOUS</Intent>
<Example>$AdjectivePrevious:adjectiveprevious</Example>
<Example>$AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo</Example>
<Example>$AdjectivePrevious:adjectivePrevious $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<Example>$AdjectivePrevious:adjectivePrevious $NounVideo:nounvideo $AdverbPrevious:adverbprevious</Example>
<Example>$VerbPlay:verbplay $AdjectivePrevious:adjectiveprevious</Example>
<Example>$VerbPlay:verbplay $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo</Example>
<Example>$VerbPlay:verbplay $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo $AdverbPrevious:adverbprevious</Example>
<Example>$VerbPlay:verbplay $NounVideo:nounvideo $AdverbPrevious:adverbprevious</Example>
<Example>$VerbPlay:verbplay $AdverbPrevious:adverbprevious $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<Example>$VerbBack:verbback $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<Example>$VerbBack:verbback $NounVideo:nounvideo</Example>
<Example>$VerbPlay:verbplay $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo again</Example>
<Example>$VerbBack:verbback $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo again</Example>
<Example>$VerbBack:verbback $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo</Example>
<Example>$VerbBack:verbback $NounVideo:nounvideo $AdverbPrevious:adverbprevious</Example>
<Example>$VerbBack:verbback $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<Example>$VerbBack:verbback</Example>
<Example>replay $AdjectivePrevious:adjectiveprevious $NounVideo:NounVideo</Example>
<Example>replay $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo $AdverbPrevious:adverbprevious</Example>
<Example>replay $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo $AdverbPrevious:adverbprevious $SuffixList:suffixlist</Example>
<Example>replay $AdjectivePrevious:adjectiveprevious $NounVideo:nounvideo $SuffixList:suffixlist</Example>
<DiscoverabilityExample>previous</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.SKIP_ADS</Intent>
<Example>$VerbSkipTransitive:verbskip $NounAds:ads</Example>
<Example>$VerbSkipInTransitive:verbskip $NounAds:ads</Example>
<Example>$VerbSkipInTransitive:verbskip</Example>
<Example>$VerbSkipInTransitive:verbskip to $NounVideo:nounvideo</Example>
<Example>$VerbSkipInTransitive:verbskip to main $NounVideo:nounvideo</Example>
<Example>$VerbSkipTransitive:verbskip $NounAds:ads and $VerbPlay:verbplay $NounVideo:nounvideo</Example>
<Example>$VerbSkipInTransitive:verbskip $NounAds:ads and $VerbPlay:verbplay $NounVideo:nounvideo</Example>
<Example>$VerbSkipInTransitive:verbskip and $VerbPlay:verbplay $NounVideo:nounvideo</Example>
<Example>$VerbStop:verbstop $NounAds:nounads</Example>
<Example>$VerbStop:verbstop $NounAds:nounads and $VerbPlay:verbplay $NounVideo:nounvideo</Example>
<DiscoverabilityExample>skip ads</DiscoverabilityExample>
<AppInForegroundOnly>true</AppInForegroundOnly>
</Action>
<Action>
<VerbClass>ActivateAction</VerbClass>
<Intent>com.google.android.youtube.voice.PLAY_NTH_VIDEO</Intent>
<Example>$VerbPlay:verbplay $AdjectiveOrdinal:index $NounListItem:nounlistitem $SuffixList:suffixlist</Example>
<Example>$VerbPlay:verbplay $AdjectiveOrdinal:index $NounListItem:nounlistitem</Example>
<Example>$VerbPlay:verbplay $AdjectiveOrdinal:index</Example>
<Example>$VerbPlay:verbplay $NounListItem:nounlistitem $AdjectiveOrdinal:index $SuffixList:suffixlist</Example>
<Example>$VerbPlay:verbplay $NounListItem:nounlistitem $AdjectiveOrdinal:index</Example>
<Example>$VerbSkipTransitive:verbplay $AdjectiveOrdinal:index $NounListItem:nounlistitem</Example>
<Example>$VerbSkipTransitive:verbplay to $AdjectiveOrdinal:index $NounListItem:nounlistitem</Example>
<Example>$VerbSkipTransitive:verbplay $AdjectiveOrdinal:index $NounListItem:nounlistitem $SuffixList:suffixlist</Example>
<Example>$VerbSkipTransitive:verbplay to $AdjectiveOrdinal:index $NounListItem:nounlistitem $SuffixList:suffixlist</Example>
<Example>$VerbPlay:verbplay $NounListItem:nounlistitem $AdjectiveCardinal:index</Example>
<Example>$VerbPlay:verbplay $AdjectiveCardinal:index</Example>
<DiscoverabilityExample>play the first video</DiscoverabilityExample>
</Action>
The evidence above only really describes the flexible nature of sentence structure. The lexicon we use with it is equally important. The old version chose specific words for each action, but the new version includes about 350 different words and phrases that can be used to build a spoken command.
Phrase Segments
<DeveloperProvidedType>
<Name>$AdjectiveCardinal</Name>
<Value>one</Value>
<Value>two</Value>
<Value>three</Value>
<Value>four</Value>
<Value>five</Value>
<Value>six</Value>
<Value>seven</Value>
<Value>eight</Value>
<Value>nine</Value>
<Value>ten</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$FirstScreen</Name>
<Value>TV</Value>
<Value>Chromecast</Value>
<Value>Console</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbPlay</Name>
<Value>begin</Value>
<Value>run</Value>
<Value>select</Value>
<Value>play</Value>
<Value>start</Value>
<Value>watch</Value>
<Value>show me</Value>
<Value>go to</Value>
<Value>go on to</Value>
<Value>unpause</Value>
<Value>press play</Value>
<Value>begin playing</Value>
<Value>start playing</Value>
<Value>start to play</Value>
<Value>view</Value>
<Value>give me</Value>
<Value>open</Value>
<Value>go ahead</Value>
<Value>bring up</Value>
<Value>present video</Value>
<Value>let me see</Value>
<Value>display</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbBack</Name>
<Value>go back</Value>
<Value>go back to</Value>
<Value>back</Value>
<Value>back up to</Value>
<Value>back up</Value>
<Value>return</Value>
<Value>rewind</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbResume</Name>
<Value>resume</Value>
<Value>resume play</Value>
<Value>resume playing</Value>
<Value>start again</Value>
<Value>continue</Value>
<Value>continue to play</Value>
<Value>keep playing</Value>
<Value>keep going</Value>
<Value>keep watching</Value>
<Value>keep listening</Value>
<Value>continue playing</Value>
<Value>finish playing</Value>
<Value>remove pause</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounListItem</Name>
<Value>video</Value>
<Value>vid</Value>
<Value>thing</Value>
<Value>item</Value>
<Value>song</Value>
<Value>result</Value>
<Value>option</Value>
<Value>one</Value>
<Value>movie</Value>
<Value>clip</Value>
<Value>choice</Value>
<Value>number</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounVideo</Name>
<Value>image</Value>
<Value>video</Value>
<Value>song</Value>
<Value>movie</Value>
<Value>clip</Value>
<Value>track</Value>
<Value>this</Value>
<Value>it</Value>
<Value>selection</Value>
<Value>one video</Value>
<Value>one song</Value>
<Value>one movie</Value>
<Value>one clip</Value>
<Value>one track</Value>
<Value>one</Value>
<Value>choice</Value>
<Value>vid</Value>
<Value>item</Value>
<Value>result</Value>
<Value>screen</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$SuffixList</Name>
<Value>in the list</Value>
<Value>on the list</Value>
<Value>in the playlist</Value>
<Value>on the playlist</Value>
<Value>in list</Value>
<Value>on list</Value>
<Value>in playlist</Value>
<Value>on playlist</Value>
<Value>instead</Value>
<Value>from the top</Value>
<Value>from top</Value>
<Value>down from the top</Value>
<Value>down from top</Value>
<Value>down</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$SuffixModeChange</Name>
<Value>instead</Value>
<Value>version</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$AdverbPrevious</Name>
<Value>before</Value>
<Value>last played</Value>
<Value>before this one</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbModeChange</Name>
<Value>go</Value>
<Value>play</Value>
<Value>go to</Value>
<Value>goto</Value>
<Value>change to</Value>
<Value>change size to</Value>
<Value>change to</Value>
<Value>change this</Value>
<Value>change this to</Value>
<Value>change video to</Value>
<Value>make video</Value>
<Value>make it</Value>
<Value>make this</Value>
<Value>make player</Value>
<Value>make</Value>
<Value>use</Value>
<Value>show in</Value>
<Value>initiate</Value>
<Value>open</Value>
<Value>show video in</Value>
<Value>switch to</Value>
<Value>switch video to</Value>
<Value>switch back to</Value>
<Value>revert to</Value>
<Value>bring up</Value>
<Value>take me to</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbEnlarge</Name>
<Value>maximize</Value>
<Value>enlarge</Value>
<Value>fill screen</Value>
<Value>enlarge to</Value>
<Value>enlarge video to</Value>
<Value>enlarge screen to</Value>
<Value>enlarge image to</Value>
<Value>expand</Value>
<Value>expand to</Value>
<Value>expand video to</Value>
<Value>expand screen to</Value>
<Value>expand image to</Value>
<Value>embiggen</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbMinimize</Name>
<Value>minimize</Value>
<Value>reduce</Value>
<Value>shrink down</Value>
<Value>shrink</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounMiniScreen</Name>
<Value>minimum size</Value>
<Value>mini player</Value>
<Value>miniplayer</Value>
<Value>small player</Value>
<Value>smaller</Value>
<Value>small</Value>
<Value>minimized</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounNormalScreen</Name>
<Value>normal screen</Value>
<Value>normalscreen</Value>
<Value>normal size</Value>
<Value>normal player</Value>
<Value>regular size</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounPlayer</Name>
<Value>player</Value>
<Value>replay</Value>
<Value>playing video</Value>
<Value>video player</Value>
<Value>screen</Value>
<Value>screen size</Value>
<Value>youtube</Value>
<Value>you tube</Value>
<Value>video</Value>
<Value>movie</Value>
<Value>clip</Value>
<Value>song</Value>
<Value>item</Value>
<Value>app</Value>
<Value>current video</Value>
<Value>current song</Value>
<Value>current movie</Value>
<Value>page</Value>
<Value>current page</Value>
<Value>playback</Value>
<Value>this one</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbPause</Name>
<Value>pause</Value>
<Value>pause playing</Value>
<Value>paws</Value>
<Value>paws playing</Value>
<Value>suspend</Value>
<Value>hold it</Value>
<Value>hold up</Value>
<Value>hold</Value>
<Value>freeze</Value>
<Value>hit pause</Value>
<Value>hit paws</Value>
<Value>push pause</Value>
<Value>push paws</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$AdverbPause</Name>
<Value>for a minute</Value>
<Value>a minute</Value>
<Value>right here</Value>
<Value>right now</Value>
<Value>right there</Value>
<Value>at this point</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounFullScreen</Name>
<Value>full screen</Value>
<Value>fullscreen</Value>
<Value>full screen view</Value>
<Value>fullscreen view</Value>
<Value>full screen mode</Value>
<Value>full screen viewing</Value>
<Value>fullscreen viewing</Value>
<Value>fullscreen mode</Value>
<Value>bigger</Value>
<Value>full</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbSearch</Name>
<Value>search</Value>
<Value>search for</Value>
<Value>find</Value>
<Value>show me</Value>
<Value>find some</Value>
<Value>look for</Value>
<Value>show results for</Value>
<Value>show</Value>
<Value>open</Value>
<Value>give me</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounSearchItems</Name>
<Value>video</Value>
<Value>song</Value>
<Value>movie</Value>
<Value>clip</Value>
<Value>stuff</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbSkipTransitive</Name>
<Value>don't play</Value>
<Value>skip over</Value>
<Value>stop playing</Value>
<Value>skip past</Value>
<Value>fast forward past</Value>
<Value>skip past</Value>
<Value>ignore</Value>
<Value>quit</Value>
<Value>pass</Value>
<Value>move past</Value>
<Value>start after</Value>
<Value>skip</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbSkipInTransitive</Name>
<Value>no ad</Value>
<Value>skip</Value>
<Value>bypass</Value>
<Value>fast forward</Value>
<Value>continue past</Value>
<Value>continue without</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbClose</Name>
<Value>close</Value>
<Value>shut down</Value>
<Value>shut it down</Value>
<Value>get rid of</Value>
<Value>end</Value>
<Value>stop watching</Value>
<Value>stop and close</Value>
<Value>exit</Value>
<Value>halt</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbStop</Name>
<Value>cancel</Value>
<Value>stop</Value>
<Value>quit</Value>
<Value>kill</Value>
<Value>cease</Value>
<Value>video stop</Value>
<Value>discontinue</Value>
<Value>turn off</Value>
<Value>i'm done watching</Value>
<Value>i'm done with</Value>
<Value>don't play</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$NounAds</Name>
<Value>ad</Value>
<Value>ads</Value>
<Value>advert</Value>
<Value>adverts</Value>
<Value>advertisement</Value>
<Value>advertisements</Value>
<Value>stupid ad</Value>
<Value>stupid ads</Value>
<Value>commercial</Value>
<Value>stupid commercial</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$AdjectiveNext</Name>
<Value>next</Value>
<Value>following</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$AdjectivePrevious</Name>
<Value>other</Value>
<Value>previous</Value>
<Value>preceding</Value>
<Value>last</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$AdverbResumeSuffix</Name>
<Value>back</Value>
<Value>backwards</Value>
<Value>rest</Value>
<Value>again</Value>
<Value>on screen</Value>
<Value>current</Value>
<Value>currently playing</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbSkipLimited</Name>
<Value>forward</Value>
<Value>skip</Value>
<Value>skip to</Value>
<Value>skip over</Value>
<Value>skip past</Value>
<Value>fast forward past</Value>
<Value>skip ahead</Value>
<Value>jump to</Value>
<Value>move to</Value>
<Value>move past</Value>
</DeveloperProvidedType>
<DeveloperProvidedType>
<Name>$VerbNext</Name>
<Value>skip forward</Value>
<Value>move down</Value>
<Value>continue forward</Value>
</DeveloperProvidedType>
With this structure in place, we will be able to say things like "play the next video," "skip current video," or even "move past this one," and YouTube will interpret all of these to mean we want to jump to the next video in line.
Whoever wrote the list of acceptable phrases had some good foresight into common terms and linguistic habits. For example, some of the easy ways to play or resume a video include: begin, give me, let me see, and go ahead. There are also some fairly non-conventional expressions making the cut, like the colloquial terms for stopping a video: kill or cancel. And somebody decided to forgo pleasantries and get honest about the way people describe advertisements, including: stupid ads and stupid commercial. (We might not have to say that as much if Google would hurry up with that ad-free subscription.) I should also point out that "stupid" is the only derogatory word that's currently supported, which means we might have to beg Google to add some choice phrases from George Carlin's list (nsfw).
There's still nothing in the apk to give any insights about the launch of voice commands on YouTube, but with the rapid progress that was made between versions, we might not have long to wait to experience our own Gary Busey moment.
Download
The APK is signed by Google and upgrades your existing app. The cryptographic signature guarantees that the file is safe to install and was not tampered with in any way. Rather than wait for Google to push this download to your devices, which can take days, download and install it just like any other APK.
Version: 10.28.57