Git Product home page Git Product logo

wow-voiceover's Introduction

VoiceOver for World of Warcraft

Contribute voices on allvoice.ai so I can give each NPC a unique AI voicemodel to power their dialog. The top rated voice for each NPC will be used.

Overview

  • tts cli to create audio files for quests and gossip text.

  • in game addon for playing generated voiceovers

  • cli uses data fetched from a local MySQL database and ElevenLabs tts for speech

Below is for developers only. Go to releases if youre looking to install the addon.

Requirements

  • python 3.10+
  • docker (for the database)

Installation

  1. Make a python virtual environment. (make sure to source it after creating)
python -m venv .venv
  1. Install the required packages.
pip install -r requirements.txt
  1. Copy the .env.example file to .env and fill in your ElevenLabs API Key and database credentials. The included database values are fine if you're going to use the docker-compose file.
cp .env.example .env
  1. Start the MySQL DB
docker compose up -d
  1. Seed the MySQL DB
python cli-main.py init-db

Voice Setup

The generation scripts assume you have voices created in Elevenlabs named in the format race-gender. For the exact races the script checks your elevenlabs account for, refer to tts_cli\consts.py. Gender will always either be male or female. ex: orc-male. You will need to create your own voice clones. A good place to get samples is @ https://www.wowhead.com/sounds/npc-greetings/name:orc

Usage

To use the interactive CLI tool, run the following command:

python cli-main.py

Language Client Selection

Currently there are no voice translations available for languages other than english. However, if you want to use the addon with a non English client, you can still do so by creating the lookup tables in the client's respective language.

To create the lookup tables, you can use the following command, with LANGUAGE_CODE representing the required language for the client:

python cli-main.py gen_lookup_tables --lang=LANGUAGE_CODE

The default selection, when no language code is provided, is English. Please be aware that the quality of text completion for translations in languages other than English can vary significantly.

The following language codes are supported:

Language Code Language
enUS English
enGB English
koKR Korean
frFR French
deDE German
zhCN Simplified Chinese
zhTW Traditional Chinese
esES European Spanish
esMX Mexican Spanish
ruRU Russian

Output

The generated TTS audio files will be saved in the sounds folder, with separate subfolders for quests and gossip. Lookup tables and sound length tables will also be generated for use in the addon.

Addon Install

Copy over the generated folder to the VoiceOverData_Vanilla folder, then the VoiceOver and VoiceOverData_Vanilla folder to World of Warcraft/_classic_era_/Interface/AddOns. Alternatively, you can syslink instead of copying for faster development. Example syslink:

export WOW_DIR=PATH_OF_YOUR_WOW_DIR
ln -s ./VoiceOver "$WOW_DIR/_classic_era_/Interface/AddOns"
ln -s ./VoiceOver_Vanilla "$WOW_DIR/_classic_era_/Interface/AddOns"

Contributing

If you want to contribute to this project, please feel free to open an issue or submit a pull request.

CLI Docs

Dataframe Schema

The dataframe schema before calling the preprocess_dataframe function consists of the following columns:

Column Description
source Indicates the type of interaction, can be 'accept', 'progress', 'complete', or 'gossip'
quest The quest ID or empty string if it's a gossip interaction
text The text template content of the interaction
DisplayRaceID The race ID of the NPC involved in the interaction
DisplaySexID The gender ID of the NPC involved in the interaction
name The name of the NPC involved in the interaction
type The type of the NPC involved in the interaction ('creature', 'gameobject', or 'item')
id The creature/gameobject/item ID of the NPC involved in the interaction

DisplayRaceID = -1 is used for interactions with inanimate NPCs: gameobjects, items etc. It's mapped to a voice called "narrator" in RACE_DICT.

New Fields Added by preprocess_dataframe

The preprocess_dataframe function adds the following new fields to the dataframe:

Column Description
race The race of the NPC, mapped from DisplayRaceID using RACE_DICT
gender The gender of the NPC, mapped from DisplaySexID using GENDER_DICT
voice_name The voice name, which is a combination of the race and gender fields
templateText_race_gender A combination of the text, race, and gender fields
templateText_race_gender_hash A hash of the templateText_race_gender field
cleanedText text after rendering template

wow-voiceover's People

Contributors

dawidmichniuk avatar matts8 avatar mrthinger avatar nathanaelmangold avatar nimfas avatar xvwyh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wow-voiceover's Issues

Quest Log: Play/Queue button is still visible for quests without voiceover

Quest link: https://www.wowhead.com/classic/quest=1048/into-the-scarlet-monastery
Quest id: 1048
Error: Sound does not exist.
Image: https://i.kek.sh/PkYCrW3KadR.png

Problem: Quests without voiceover have a faulty button. The play state remains ON and it's messing up the queue.
Solution: To make the UI intuitive- I suggest removing the play/queue button from the Quest Log if it doesn't have a voiceover file associated.

Details:
WOW Classic era (Installed from CurseForge using the Curse addon manager)
Windows 10

Full list of addons:
Atlas Classic WoW
AtlasLootClassic
Auctionator
Bagnon ItemLevel
Bartender 4
Nova World Buffs
Plater nameplates
Questie
RareScanner
Routes
Spy Classic
Target Health
TomTom
WekAuras
WoW-ProGuides

Please do it in another langages

A lot of people still don't know to read properly in 2023, and this addon can help them. I can help to do the voice in FR if you need.

Other Language Support

I really love what you did here <3

as I'm a native German speaker I wonder if you've ever planed to support other languages then English or maybe would accept help for such??

Keep the work
/cheers B!!

Only English?

would be cool to have it for other languages aswell

Tinkerwiz - Incorrect voice vs text

NPC: Tinkerwiz - Journeyman Engineer in Ratchet

As a horde character, when you reach level 50 engineering, the text changes to "I got nothin' more to teach! Not for somebody who knows as much as you do, anyway! You horde types need to talk to Nogg in Orgrimmar!"

However, the voice says the Alliance version.

Backlog idea: Compatibility with the Immersion addon

First of all, I would like to thank you for the great work you are doing :)

My idea basically revolves around the text-displaying UI of the immersion addon. When reading text in-game, the immersion addon should display the correct text currently being read in its own UI window, providing a more immersive and story-driven experience for players.

I do realize this is a niche feature, but I believe it would be an awesome addition to the addon, especially for those who enjoy reading quest dialogue and lore books. Thank you for considering my suggestion!

How do I access configuration GUI, if any?

Some documentation would be greatly appreciated. Is there a way to edit any settings of the addon, or to move the 3D model frame? For me, it appears in an awkward spot on the screen near the bottom right. If there isn't a config menu available in-game, it would be great if you could tell us how to change some settings by editing the addon files themselves. Thanks!!

Confused on the setup

Hi,

Great work on the addon. I loaded the game and got an unexpected symbol expected near the # on line 3 for the fuzzy search function. Am I supposed to do anything besides just drag and dropping the addon inside of the addons folder? I'm also on 1.12.1 if that might throw a wrench in the gears. Thanks.

out of date error Wow Classic

playing wow classic Version 1.16.5 (7065)

it says out of date in addon window.
when loading the addons im getting following error: .../AI_VoiceOver/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:24: unexpected symbol near `...'

Error when playback sound channel is muted

The quest queue works incorrectly when the selected sound output channel is muted. The models move endlessly, and pressing the play/pause button causes an error. Also, the button texture doesn't change. After unmuting the channel, nothing changes and heads continue infinitely animation.

You can mute the destination sound channel to reproduce this, just try to accept, turn in any quest or press the play button in the quest log.

  1. Error on play/pause press
16x AI_VoiceOver/SoundQueue.lua:92: Usage: StopSound(soundHandleID, [optional: fadeout time in ms])
[string "=[C]"]: in function `StopSound'
[string "@AI_VoiceOver/SoundQueue.lua"]:92: in function `pauseQueue'
[string "@AI_VoiceOver/SoundQueueUI.lua"]:210: in function <AI_VoiceOver/SoundQueueUI.lua:205>

Locals:
(*temporary) = nil
  1. Error on next sound in queue play after manually removing current sound from the queue
9x AI_VoiceOver/SoundQueue.lua:124: Usage: StopSound(soundHandleID, [optional: fadeout time in ms])
[string "=[C]"]: in function `StopSound'
[string "@AI_VoiceOver/SoundQueue.lua"]:124: in function `removeSoundFromQueue'
[string "@AI_VoiceOver/SoundQueue.lua"]:76: in function <AI_VoiceOver/SoundQueue.lua:75>

Locals:
(*temporary) = nil

Typo: takling

desc = "Automatically hides the takling frame when no voice over is playing.",

How can we help develop the addon?

How can the community help develop the addon?

My question is - are you interested in expanding the number of voiced-over NPCs and how can I help you?
Could you please provide an example of sql or some other type of data that would be useful for you to input and implement in future versions of the addon?

Also, if you need a second opinion on something in russian, would be honored to help.

Mute music during voiceover

An option for lowering the music channel during the voiceover would be great. Some zone music overpowers the voice over even at lower percentages.

Sounds not playing, reason unclear.

I have both the addon and data installed to interface/addons
image

Created a new character.
Interacted with the first NPC. No voices.
Cannot even see the UI for the addon, though I can open the options via the minimap button.

What am I missing?

Voice of non-questgivers are also played

When I fly and speak with an npc or with an innkeeper, I get to hear its dialogue. Problem persists while the setting is put on "only quest-givers" in the settings.

Unsure what version I'm using currently.

NPCs with multiple dialogue options play "welcome" voice line every time an option is selected

NPCs with dialogue options (such as city guards) play their welcome voiceline every time you select an option. For example, talking to a bluffwatcher (Thunderbluff guard) causes them to say "What are you looking for?" when you first talk to them, and again when you select "a profession trainer", and again when you select a profession. Ideally the option tree would be voiced, but if that's not possible then just having them not repeat would be an improvement

Is it possible to automatically end the voice dialogue when disengaging with the NPC, and permanently hide the window?

Hi, thank you for this wonderful addon!

I was wondering if it was possible to make an option to automatically cancel the voice dialogue when you stop talking to the NPC when the dialogue/quest window goes away when you walk away, close out of the window, or accept the quest?

Also, is it possible to make an option to permanently hide the addon UI window until you toggle it again, either by a command or minimap button? Because even when auto-hide is enabled, it still pops up when a voice is playing.

Thank you so much!

Wrong Text? - Nissa Firestone

Sorry if this is in the wrong place.

Upon first speaking with Nissa Firestone with no First Aid known, she says something about getting further training from someone else instead of, "Are you a student of the medical sciences?"

UI doesn't work

When I have the addon activated, I can't press any menu items. I think the addon is conflicting with my Dominos actionbars.

Current addon version: 1.0.1
Dominos version: 10.0.22

NPCs with both gender options for the same name have incorrect voices

NPCs that can be either male or female, such as city guards, both use the male voice (at least in the instance that I tested: Bluffwatchers in Thunderbluff). Not sure if this something that can be detected programmatically, but having both voiced with the correct gender would be nice.

Where can I find the settings on WoW 1.12.1?

I'm on WoW 1.12.1 and on the bottom left of the avatar pop-up window, there's a small circle which shows the following tooltip:

Frame position can be locked in settings

How or where can I find those settings?

❤️ Thanks!

Dialog channel not working.

Setting Sound Channel to Dialog lead to strange behaviour. After interaction with quest giver the dialog channel get muted in sound setting of the game and there is no sound of the addon. Other channels work fine.

P.S. In early versions of the addon this channel worked fine.

What features does this addon have?

I didn't know that I could even replay previous quests via a ⏯️ button next to the quest in the quest log.

What else am I missing? Is there a list of all the features of this addon?

❤️ Thanks!

Wrong Text? - Mountaineer Stormpike

Hard to pinpoint what went wrong. Haha. Started going off about needing a shield? This was after turning in the first quest I had for him. Forgot the name of it.

Books Narrated

Currently no books are narrated maybe they could be narrated by the narrator from the intro?

Add the NPC's text to the dialog box

It'd be nice for those of us with ADHD who forget what the NPC says to be able to see it and read it whilst the voiceover reads it back to us!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.