This is a modified version of SoundFromAssetBundle plugin, which is a modified version of LogicBrick RandomSoundFromAB. It has the same active functionality as these plugins but with some additions I have added.
If you would like to see a demo of this plugin, please check out DirtyTalkPlayer:
hub.virtamate.com
Plugin Enhancements/Additions
Can be placed on an empty atom
Select Person option
Select Audio Source option
Sounds list with remove option
Time Delay option (1-60 sec slider)
Preview, PlayRandom and Stop Button option
Important Note:
If you end up adding more Person's/AudioSources to your scene, do it first then add the instance of the plugin to connect to it. When the plugin is loaded it checks and does a count of all Person/AudioSources in the scene and updates the drop down lists to select them. If you add additional ones later or rename them, it's supposed to refresh and update but it can be slow because I did not set it to check every frame, as I was worried it could effect performance in scenes. If you don't see your newly added/renamed Person or AudioSource, simply remove and reload that instance of the plugin to force it to refresh the list.
Can be placed on an empty atom
I was testing out creating a DirtyTalkPlayer and when I was done, I had a lot of issue with merge loading it on different scenes and my plugins on the model being wiped/getting unmapped depending on which way I merged or imported in a SubScene. This solves for that because you can put this plugin on an empty atom and still get lip sync to work by routing to HeadAudioSource and it won't mix in with existing plugins on a model. This also frees up clutter on a model plugins tab so you don't have to add 8+ instances just for your audio. You can organize it all on an empty atom. You can then click the Preset tab on the empty atom and save it as a Preset to easily save and reload entire sets of routed audio.
This can be made to function similar to AudioMate Collections but with Assetbundles. You can save it all as an Atom Preset and then reload it by adding an Empty Atom, clicking the Preset tab, Select Existing to load in your Collection Library/Set. It can still be placed on a person atom as well, but it's recommended to put it on an empty atom and rename the atom to something you can easily find like AudioRouterAB or AudioRouter.
Select Person option
Route your AssetBundle Audio to a specific person or change the routing to another person as needed.
Select Audio Source option
Select Audio Source lets you route it to HeadAudioSource or to any AudioSource in the scene. This allows for multitrack options for Dirty Talk, Music, SFX, etc. all on one AudioRouter atom if you want. You could also create your own digital jukebox by having multiple instances of assetbundle tracks that you switch between or that play at different locations in your scene.
Sounds list with remove option
Auto adds all files to UIList with individual remove from list option. If you import in a users AssetBundle but don't like certain songs or audio, you can remove just the ones you don't like from the list.
Time Delay option (1-60 sec slider)
One issue I had with prior testing of existing plugins is the audio would play back to back too quickly. This delay lets you specify how long it waits until it plays the next track either in the list or randomly. A slider was used so it could be added to a UI to give users the ability to modify it if needed. This allows for interesting mixing options because you can have tracks set to PlayIfClear and have a Delay that is 10 seconds on one for statements and 3-5 seconds on another for possibly Moans, and you can create your own custom time weight intervals that mix and play Moans/Orgasm audio in between general statement audio. If you'd like to see an example of this, review the DirtyTalkPlayer and you can check the box for Moans and/or Orgasm and set intervals for each with the sliders. And then you can click individual categories such as Vagina, Anal, etc. and it will mix in moans and the general audio of that category or part of the scene you are on. There is also a slider for General that does a group delay on that entire group outside of Moans and Orgasm.
Preview, PlayRandom and Stop Button option
After you add your AssetBundle you can click Preview and Stop just to confirm it is working. If you want to start it right from the plugin, you can click PlayRandom. These buttons are just for convenience, you can still use regular triggers as well. To see some examples of trigger mapping, please view DirtyTalkPlayer.
How to Use/Add Plugin To Scene
Add an Empty Atom
Go to Edit Mode, click Add Atom (+ icon), Misc, Empty, check Select Atom On Add (so after added you are on it right away to edit/use it), click Add Atom.
Update Name and Add Plugin
In the top right you can click on the word Empty and change the name of the Empty atom to anything you want. You might go with something like AudioRouterAB, AudioRouter, AudioRouter - Music, Music Playlist, SFXRouter, etc.
Click Plugins tab then Add Plugin button. You can get back to this atom by clicking the arrow icon on the menu and search for it.
Search for the plugin. You will find it in AddonPackages, you can click on AddonPackages filtered on the left or use the Search box in the top left corner. Search AudioRouter and open it, click on the AudioRouterAB.cs file to add it.
Click on Open Custom UI
Click Select AssetBundle and browse and select an AssetBundle to add. Then choose a Person and Audio Source. If it's going to a regular AudioSource in your scene for music/sfx and not to a Person, you can leave Select Person Atom blank. From there you can modify your settings and set your triggers on buttons in your scene like normal. Or use the buttons on the plugin to do a quick Preview/Stop or just start from the plugin directly with PlayRandom if you don't want to mess with setting up buttons with triggers. If you want to see an example of a scene setup using it with trigger, check out DirtyTalkPlayer on the hub.
A very special thanks to the following creators that helped make this possible! Thank you!
Credits
SoundFromAssetBundle from everlaster.SoundFromAssetBundle.1.var
SoundFromAB LogicBrick from MacGruber.LogicBricks.14.var
If you would like to see a demo of this plugin, please check out DirtyTalkPlayer:

DirtyTalkPlayer - Toolkits + Templates -
Dirty Talk Player for Female and Male/Futa. UI includes buttons for Moans, Intro, Vagina, VaginaFast, Anal, Orgasm and After audio with lipsync setup and additional controls. All audio uses AudioRouterDB so it can be easily transferred/used from...

Plugin Enhancements/Additions
Can be placed on an empty atom
Select Person option
Select Audio Source option
Sounds list with remove option
Time Delay option (1-60 sec slider)
Preview, PlayRandom and Stop Button option
Important Note:
If you end up adding more Person's/AudioSources to your scene, do it first then add the instance of the plugin to connect to it. When the plugin is loaded it checks and does a count of all Person/AudioSources in the scene and updates the drop down lists to select them. If you add additional ones later or rename them, it's supposed to refresh and update but it can be slow because I did not set it to check every frame, as I was worried it could effect performance in scenes. If you don't see your newly added/renamed Person or AudioSource, simply remove and reload that instance of the plugin to force it to refresh the list.
Can be placed on an empty atom
I was testing out creating a DirtyTalkPlayer and when I was done, I had a lot of issue with merge loading it on different scenes and my plugins on the model being wiped/getting unmapped depending on which way I merged or imported in a SubScene. This solves for that because you can put this plugin on an empty atom and still get lip sync to work by routing to HeadAudioSource and it won't mix in with existing plugins on a model. This also frees up clutter on a model plugins tab so you don't have to add 8+ instances just for your audio. You can organize it all on an empty atom. You can then click the Preset tab on the empty atom and save it as a Preset to easily save and reload entire sets of routed audio.
This can be made to function similar to AudioMate Collections but with Assetbundles. You can save it all as an Atom Preset and then reload it by adding an Empty Atom, clicking the Preset tab, Select Existing to load in your Collection Library/Set. It can still be placed on a person atom as well, but it's recommended to put it on an empty atom and rename the atom to something you can easily find like AudioRouterAB or AudioRouter.
Select Person option
Route your AssetBundle Audio to a specific person or change the routing to another person as needed.
Select Audio Source option
Select Audio Source lets you route it to HeadAudioSource or to any AudioSource in the scene. This allows for multitrack options for Dirty Talk, Music, SFX, etc. all on one AudioRouter atom if you want. You could also create your own digital jukebox by having multiple instances of assetbundle tracks that you switch between or that play at different locations in your scene.
Sounds list with remove option
Auto adds all files to UIList with individual remove from list option. If you import in a users AssetBundle but don't like certain songs or audio, you can remove just the ones you don't like from the list.
Time Delay option (1-60 sec slider)
One issue I had with prior testing of existing plugins is the audio would play back to back too quickly. This delay lets you specify how long it waits until it plays the next track either in the list or randomly. A slider was used so it could be added to a UI to give users the ability to modify it if needed. This allows for interesting mixing options because you can have tracks set to PlayIfClear and have a Delay that is 10 seconds on one for statements and 3-5 seconds on another for possibly Moans, and you can create your own custom time weight intervals that mix and play Moans/Orgasm audio in between general statement audio. If you'd like to see an example of this, review the DirtyTalkPlayer and you can check the box for Moans and/or Orgasm and set intervals for each with the sliders. And then you can click individual categories such as Vagina, Anal, etc. and it will mix in moans and the general audio of that category or part of the scene you are on. There is also a slider for General that does a group delay on that entire group outside of Moans and Orgasm.
Preview, PlayRandom and Stop Button option
After you add your AssetBundle you can click Preview and Stop just to confirm it is working. If you want to start it right from the plugin, you can click PlayRandom. These buttons are just for convenience, you can still use regular triggers as well. To see some examples of trigger mapping, please view DirtyTalkPlayer.
How to Use/Add Plugin To Scene
Add an Empty Atom
Go to Edit Mode, click Add Atom (+ icon), Misc, Empty, check Select Atom On Add (so after added you are on it right away to edit/use it), click Add Atom.
Update Name and Add Plugin
In the top right you can click on the word Empty and change the name of the Empty atom to anything you want. You might go with something like AudioRouterAB, AudioRouter, AudioRouter - Music, Music Playlist, SFXRouter, etc.
Click Plugins tab then Add Plugin button. You can get back to this atom by clicking the arrow icon on the menu and search for it.
Search for the plugin. You will find it in AddonPackages, you can click on AddonPackages filtered on the left or use the Search box in the top left corner. Search AudioRouter and open it, click on the AudioRouterAB.cs file to add it.
Click on Open Custom UI
Click Select AssetBundle and browse and select an AssetBundle to add. Then choose a Person and Audio Source. If it's going to a regular AudioSource in your scene for music/sfx and not to a Person, you can leave Select Person Atom blank. From there you can modify your settings and set your triggers on buttons in your scene like normal. Or use the buttons on the plugin to do a quick Preview/Stop or just start from the plugin directly with PlayRandom if you don't want to mess with setting up buttons with triggers. If you want to see an example of a scene setup using it with trigger, check out DirtyTalkPlayer on the hub.
A very special thanks to the following creators that helped make this possible! Thank you!
Credits
SoundFromAssetBundle from everlaster.SoundFromAssetBundle.1.var
SoundFromAB LogicBrick from MacGruber.LogicBricks.14.var