Large music libraries

From VoxCommando
Revision as of 11:24, 13 January 2021 by James (talk | contribs) (1 revision)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Users with large music libraries (>20,000 songs) sometimes notice that VoxCommando takes longer to load once they have generated the xml for their music libraries.

Root Causes

For the command "Play song {1}", which is included in all the standard media player configurations, VoxCommando must index all of the songs in your collection. Note that this level of indexing is not needed for the other media-related voice commands such as asking for a particular playlist, album, artist, songs with high ratings, movies, etc. These items still need to be indexed, but you will usually have fewer total items, so the "Play song by name" commands tend to create the greatest delays in load time.

By default, VC indexes not just the song titles but all of the substrings within a song name for every song in the library, so that users can ask for a song by a partial title (this is known as submatching). This increases the information that needs to be processed because VoxCommando needs to store all the possible phrases you might use to ask for a song. A very long song name will have many possible subphrases. This number grows exponentially with the number of words in the title.

Within reason, VoxCommando is capable of handling large music libraries, particularly when properly tagged. However, the more songs you have the longer it will take to initially process them. It also tends to be true that the larger our music libraries the more likely they are to be poorly tagged, which impacts processing time.

In some cases you may have too many items and VoxCommando will fail to load. This will vary from system to system based on your hardware and on the size of your library, and the quality of your media meta-tags.

A messy library where you have accidentally ended up with the song lyrics in the title or artist tag will obviously cause problems. You may laugh, but we have seen this happen more than once when people send us logs.

Options for Reducing Load Time

VC provides numerous ways for users with large libraries to reduce initial processing time.

Turn off submatching

You can choose to turn off song title submatching (described above).

This means that you will then only be able to ask for songs by their full titles. So: "Play song Lucy in the Sky With Diamonds", rather than just being able to say, "Play song Lucy in the Sky".

How to turn off submatching in your songs payload XML file

  1. Search for the "Play song {1}" command in your command tree.
  2. Double-click on the payload XML file that contains your songs.
  3. Click on Open/Edit.
  4. At the bottom of the window is a checkbox "SubMatch All". Select and then deselect it to remove submatching on all songs.
  5. Save the payload XML file before closing the window.

Fine-tune submatching

If you don't want to turn off submatching entirely, you can go into VC Options > Advanced to fine-tune how submatching works.

Fine tune subphrases2.png

The Phrase Processing advanced option defines the minimum and maximum subphrase lengths (in characters) that VoxCommando will recognize in any payload XML file where submatching has been turned on.

The "maximum phrase length" option is there to prevent problems caused by badly tagged music, such as having comments or lyrics in the title tag.

There are two ways to reduce the number of subphrases and therefore the processing time.

  1. Increase the minimum subphrase length.
  2. Decrease the maximum subphrase length.

Regardless of how this is set, VoxCommando will always use the complete title as one of the phrases.

Filter your song library

VoxCommando also provides tools that allow users to filter out the number of individual song titles that need to be indexed overall. For example, users can filter out songs they've never listened to or that have a very low rating, or tracks of particular genres.

These tracks can still be accessed by all other means of playing music -- by playlist, artist, album, rating (e.g., "Play not rated"), genre, etc. It simply means one can't ask for that filtered out subset of the library by specific song title. More information on filtering methods for different media players can be found on the forum.

Example forum posts:

Use open dictation

Playsong.png
Dictation payload.png

Another option is to use open dictation for the one "play song {1}" command instead of indexing all of the songs in one's library. This eliminates the extra loading time when VC launches, but will also reduce the ability of the program to understand what you're saying for that one command.

How to modify the Play Song command to use free dictation

  1. Search for the "Play song {1}" command in your command tree.
  2. Delete the song payloadXML file you see in the command.
  3. With your play song command still selected, go up to the phrase picker menu and select Payload Dictation > Regular.
  4. Make sure that this payload appears below the phrase in your command (i.e., where the payloadXML file was before you deleted it).
  5. Save your command tree.

Delete the command

Users with large libraries can choose to simply delete the one command that asks for individual songs by name. Again, in such cases it would still be possible to play tracks by every means except by asking for a specific track.