Advertisement
SmallBlue

Renpy 15ai MWHS dubbing

Jan 9th, 2021
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.13 KB | None | 0 0
  1. import os
  2. from fifteen_api import FifteenAPI
  3. import csv
  4. import re
  5.  
  6. tts_api = FifteenAPI()
  7.  
  8. mwhscharacters = [['c','Twilight Sparkle'],['i','Rise Kujikawa'],['a','Adagio Dazzle'],['h','Lyra'],['n','Maud Pie']]
  9.  
  10. previous_character = ''
  11.  
  12. def ChooseCharacter(char):
  13.     global previous_character
  14.     if char == 'extend':
  15.         return previous_character
  16.     else:
  17.         for character in mwhscharacters:
  18.             if char[0] == character[0]:
  19.                 current_character = character[1]
  20.                 previous_character = current_character
  21.                 break          
  22.  
  23.     return current_character
  24.  
  25. def TextCorrector(txt):
  26.     result = txt.replace("{w}","...")
  27.     result = result.replace("{i}","")
  28.     result = result.replace("[player]","Player")
  29.     result = result.replace("[pronoun[1]]","them")
  30.     result = result.replace("[pronoun[2]]","their")
  31.     result = result.replace("[pronoun[4]]","they're")
  32.     result = result.replace("[pronoun[5]]","they're")
  33.     result = result.replace("[pronoun[0]]","they")
  34.     result = result.replace("[is_conj]","are")
  35.     result = result.replace("[s_conj]","") #I don't like to force pronouns like this, but the empty gaps are too much
  36.     result = re.sub(r"\s*{.*}\s*", " ", result)
  37.     result = re.sub(r"\s*\[.*\]\s*", " ", result)
  38.     print(result)
  39.     return result
  40.  
  41. with open('dialogue.tab', newline='') as dialogue:
  42.     dialogue_reader = csv.reader(dialogue, delimiter='\t')
  43.  
  44.     firstline = True
  45.     i = 0
  46.  
  47.     for line in dialogue_reader:
  48.  
  49.         if firstline:
  50.             firstline = False
  51.             continue
  52.  
  53.         #If Its from the promo material, skip. Those dont happen in the game.
  54.         if line[0].find('trailer') != -1 or line[0].find('screenshots') != -1 or line[0].find('letsplayers') != -1:
  55.             continue
  56.  
  57.         #Get the character
  58.         if line[1] != 'centered' and line[1] != '':
  59.  
  60.             final_character = ChooseCharacter(line[1])
  61.         else:
  62.  
  63.             continue
  64.  
  65.         #Correct the text
  66.  
  67.         if re.search('[a-zA-Z]',line[2]):
  68.  
  69.             final_text = TextCorrector(line[2])
  70.         else:
  71.  
  72.             continue
  73.  
  74.         tts_api.save_to_file(final_character,"Neutral",final_text,line[0] + '.wav')
  75.         '''
  76.         os.system("ffmpeg -i " + line[0] + ".wav " + line[0] + ".ogg")
  77.         os.remove(line[0] + ".wav")
  78.         '''
  79.         i = i + 1
  80.         print(str(i) + '/' + str(3252))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement