尼米解说员

尼米解说员

尼米担任旁白的配音演员

鸣谢 *灵感来源于 KasadaWolfduaSnk4211NolesterolXiaokuii *

描述

她的频道:Nimi Nightmare

[youtube]IjhGikFqlwY[/youtube]

[youtube]5HmxBm3_s28[/youtube]

此模组TTS(文本转语音)AI 朗读旁白者的对话,这些对话由 STT(语音转文本)程序提取 ‧˚₊꒷꒦︶꒷꒦꒷︶꒦꒷₊˚‧

试听对比:▶ılıılıılıılıılıılı

女孩版本<< 男性版本<< 女性版本<< 原版<<

真实母亲的声音 视频使用的是基于女性版本的高精度版本 尽情享受吧,留下你的评论,也许,给我的时间一点小小的捐赠 <3

安装 使用 BG3ModManager 安装(启用它,允许它)或手动安装,它只是一个 .pak 文件

其他 完全不是纯 AI 作业:我该做什么 STT 的脚本(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 ================]")

ko-fi paypal