0 of 0

File information

Last updated

Original upload

Created by

ToxicDrake

Uploaded by

ToxicDrake

Virus scan

Some manually verified files

Tags for this mod

About this mod

OK as Narrator's voice actor

Requirements
Permissions and credits
Donations
CREDIT
Inspired by KasadaWolfduaSnk4211NolesterXiaokuii

DESCRIPTION
Her channel : Ouro Kronii Ch. hololive-EN


This mod let TTS (Text-to-speech) AI read Narrator's dialogue, which extracted by STT (Speech-to-text) program
‧˚₊꒷꒦︶꒷꒦꒷︶꒦꒷₊˚‧

Listen to compare: ▶ılıılıılıılıılıılı
>>Girl version<<
>>Male version<<
>>Female version<<
>>OG version<<
OK is perfect
The video using High accurary version, base on Female version
Do enjoy, give your comments and maybe, a little donation for my time <3

INSTALLATION
Install with BG3ModManager (enable it, allow it) or manually, it's just a single .pak file

OTHER
STT's script ( Google Colaboratory ):

from google.colab import drive
drive.mount('/content/drive')
!pip install git+https://github.com/openai/whisper.git
!sudo apt update && sudo apt install ffmpeg

from google.colab import drive
drive.mount('/content/drive')
import os
import shutil
import time
import re

# Define the directory containing .wav files
audio_dir = "/content/drive/MyDrive/audios"

# Define the output directory in Google Drive
output_dir = "/content/drive/MyDrive/Narrator_Out_Large"

# Define the completed directory in Google Drive
completed_dir = "/content/drive/MyDrive/Completed/audios"

# Counter for processed files
counter = 0

# Get the total number of .wav files
total_files = len([name for name in os.listdir(audio_dir) if name.endswith(".wav")])

# Function to replace any existing file or folder
def replace_existing(path):
    if os.path.exists(path):
        if os.path.isfile(path):
            os.remove(path)
        else:
            shutil.rmtree(path)

# Create the output and completed directories if they don't exist
for dir in [output_dir, completed_dir]:
    if not os.path.exists(dir):
        os.makedirs(dir)

# Check if there are .txt files in the output directory that have similar names to any .wav files in the audio directory
for filename in os.listdir(output_dir):
    if filename.endswith(".txt"):
        wav_file = os.path.join(audio_dir, os.path.splitext(filename)[0] + ".wav")
        if os.path.exists(wav_file):
            shutil.move(wav_file, completed_dir)

# Check if there are .wav files in the completed directory that don't have similar names to any .txt files in the output directory
for filename in os.listdir(completed_dir):
    if filename.endswith(".wav"):
        txt_file = os.path.join(output_dir, os.path.splitext(filename)[0] + ".txt")
        if not os.path.exists(txt_file):
            shutil.move(os.path.join(completed_dir, filename), audio_dir)

# Iterate over all files in the directory
for filename in os.listdir(audio_dir):
    if filename.endswith(".wav"):
        # Full path to the .wav file
        wav_file = os.path.join(audio_dir, filename)

        # Attempt to transcribe the file up to 5 times
        for attempt in range(5):
            try:
                # Transcribe the .wav file
                !whisper "$wav_file" --model large

                # If transcription is successful, move the .txt file to Google Drive and print a number
                txt_file = "/content/" + os.path.splitext(filename)[0] + ".txt"

                # Open the transcribed text file and read its content
                with open(txt_file, 'r') as file:
                    data = file.read()

                # Replace multiple "." with a single "."
                data = re.sub('\.+', '.', data)

                # Replace newline characters with a space to ensure the transcribed text does not contain more than one line
                data = data.replace('\n', ' ')

                # Write the modified content back to the file
                with open(txt_file, 'w') as file:
                    file.write(data)

                # Replace any existing file or folder
                replace_existing(os.path.join(output_dir, os.path.basename(txt_file)))

                shutil.move(txt_file, output_dir)

                # Move the .wav file to the completed directory
                shutil.move(wav_file, completed_dir)

                # Print the counter for successful transcriptions along with the filename
                print(f"Successfully transcribed file number {counter + 1} - {filename}")
                print(f"Transcribed content: \n{data}")

                # If successful, break the loop and move on to the next file
                break

            except Exception as e:
                print(f"Failed attempt {attempt+1} for {filename}: {e}")

                # Wait for a bit before trying again
                time.sleep(5)

        # Increment the counter for processed files
        counter += 1

        # Print the progress percentage
        print(f"Progress: {round((counter / total_files) * 100, 2)}%")

print("[================ TRANSCRIPTION COMPLETED ================]")

   ▅   █ hire Me for any Voice request █