logo
banner
Avaliação
Votado0

Narrador Nimi

0
Versão do mod:2
Versão do jogo:4.1.1.6897358
O mod foi testado com sucesso e está livre de vírus
image

Baldur's Gate 3

Denunciar mod

  • image
modalImage

Sobre este Mod

Este modo permite que o TTS (Text-to-speech, texto em fala) AI leia a caixa de diálogo do Narrador, cujo conteúdo foi extraído pelo programa

§₊꒷꒦ ꒷ ꒦ ꒷ ꒦ ꒷ ₊)


Nimi Nightmare como ator de voz do Narrador

Inspirado por Kasada, Wolfdua,


Script de STT:

da unidade de importação google.colab
drive.mount('/conteúdo/drive')
!instalar pip git+https://github.com/openai/whisper.git
!atualização do sudo apt && instalação do sudo apt ffmpeg

da unidade de importação google.colab
drive.mount('/conteúdo/drive')
importar so
importar shutil
hora da importação
importar re

# Definir o diretório contendo arquivos .wav
audio_dir = "/content/drive/MyDrive/audios"

# Definir o diretório de saída no Google Drive
output_dir = "/content/drive/MyDrive/Narrator_Out_Large"

# Definir o diretório concluído no Google Drive
complete_dir = "/content/drive/MyDrive/Completed/audios"

# Contador para arquivos processados
contador = 0

# Obtenha o número total de arquivos .wav
total_files = len([nome do nome em os.listdir(audio_dir) if name.endswith(".wav")])

# Função para substituir qualquer arquivo ou pasta existente
def replace_existing(caminho):
  se os.path.exists(caminho):
    if os.path.isfile(caminho):
      os.remove(caminho)
    senão:
      shutil.rmtree(caminho)

# Criar a saída e os diretórios concluídos, se não existirem
para dir em [output_dir, completed_dir]:
  se não for os.path.exists(dir):
    os.makedirs(dir)

# Verifique se há arquivos .txt no diretório de saída com nomes semelhantes aos arquivos .wav no diretório de áudio
para nome de arquivo em os.listdir(output_dir):
  se filename.endswith(".txt"):
    wav_file = os.path.join(diretório_áudio, os.path.splitext(nome_arquivo)[0] + ".wav")
    se os.path.exists(wav_file):
      shutil.move(arquivo_wav, dir_concluído)

# Verifique se há arquivos .wav no diretório concluído que não tenham nomes semelhantes a nenhum arquivo .txt no diretório de saída
para nome de arquivo em os.listdir(complete_dir):
  se filename.endswith(".wav"):
    txt_file = os.path.join(dir_saída, os.path.splitext(nome_de_arquivo)[0] + ".txt")
    se não os.path.exists(txt_file):
      shutil.move(os.path.join(complete_dir, nome de arquivo), audio_dir)

# Iterar todos os arquivos no diretório
para nome de arquivo em os.listdir(audio_dir):
  se filename.endswith(".wav"):
    # Caminho completo para o arquivo .wav
    wav_file = os.path.join(pasta_de_áudio, nome do arquivo)

    # Tentativa de transcrever o arquivo até 5 vezes
    para tentativa no intervalo(5):
      tente:
        # Transcrever o arquivo .wav
        !sussurrar "$wav_file" — modelo grande

        # Se a transcrição for bem-sucedida, mova o arquivo .txt para o Google Drive e imprima um número
        txt_file = "/content/" + os.path.splitext(nome do arquivo)[0] + ".txt"

        # Abrir o arquivo de texto transcrito e ler seu conteúdo
        com open(txt_file, 'r') como arquivo:
          dados = file.read()

        # Substitua vários "." por um único "."
        dados = re.sub('\.+', '.', dados)

        # Substitua os caracteres de nova linha por um espaço para garantir que o texto transcrito não contenha mais de uma linha
        dados = data.replace('\n', ' ')

        # Gravar o conteúdo modificado de volta no arquivo
        com open(txt_file, 'w') como arquivo:
          file.write(dados)

        # Substituir qualquer arquivo ou pasta existente
        replace_existing(os.path.join(dir_saída, os.path.basename(arquivo_txt))

        shutil.move(arquivo_txt, dir_saída)

        # Mover o arquivo .wav para o diretório concluído
        shutil.move(arquivo_wav, dir_concluído)

        # Imprimir o contador para transcrições bem-sucedidas junto com o nome do arquivo
        print(f"Número de arquivo transcrito com êxito {counter + 1} - {filename}")
        print(f"Conteúdo transcrito: \n{dados}")

        # Se for bem-sucedido, quebrar o loop e passar para o próximo arquivo
        interrupção

      exceto Exceção como e:
        print(f"Falha na tentativa {try+1} para {filename}: {e}")

        # Aguarde um pouco antes de tentar novamente
        tempo.repouso(5)

    # Incrementar o contador para arquivos processados
    contador += 1

    # Imprimir a porcentagem de andamento
    print(f"Progresso: {round((counter / total_files) * 100, 2)}%")

print("[================== TRANSCRIÇÃO CONCLUÍDA ===================]")

Mods/Addons semelhantes

Versão do Jogo *

4.1.1.6897358 (Nimi Narrator-4113-2-1756183538.rar) Nimi Narrator

4.1.1.6897358 (Full audios pack-4113-1-1699629855.rar) Nimi Narrator (Audio)

4.1.1.6897358 (Narrator voice lines-4113-1-1756091396.rar) Narrator Voice Lines as Text