ProcessSub.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from difflib import SequenceMatcher
  2. import os
  3. from gtts import gTTS
  4. from mutagen.mp3 import MP3
  5. max_len = 3
  6. def similar(a, b):
  7. return SequenceMatcher(None, a, b).ratio()
  8. def audio_compare_from_text(gt,gen):
  9. tts=gTTS(text=gen, lang='zh')
  10. tts.save("gen_tmp.mp3")
  11. tts=gTTS(text=gt, lang='zh')
  12. tts.save("gt_tmp.mp3")
  13. audio = MP3("gen_tmp.mp3")
  14. gen_len = audio.info.length
  15. audio = MP3("gt_tmp.mp3")
  16. gt_len = audio.info.length
  17. os.remove('gen_tmp.mp3')
  18. os.remove('gt_tmp.mp3')
  19. return gt_len, gen_len
  20. #break in nested loop only break 1 layer
  21. def adjustSub_by_gt_array(gt_array, generated_array):
  22. for gen_idx in range(len(generated_array)):
  23. #print('------------------------------------------------------------------------')
  24. for gt_idx in range(len(gt_array)-max_len):
  25. for l in range(max_len):
  26. gt_text = gt_array[gt_idx]
  27. gen_text = generated_array[gen_idx]
  28. for idx_num in range(l):
  29. gt_text += gt_array[gt_idx+idx_num+1]
  30. gt_len, gen_len = audio_compare_from_text(gt_text,gen_text)
  31. #print(gt_text+'|'+str(gt_len)+'|'+gen_text+'|'+str(gen_len)+'|'+'SIMILARITY:'+str(similar(gt_text,gen_text)))
  32. if abs(gen_len - gt_len) < 0.3 and similar(gt_text,gen_text) > 0.5:
  33. generated_array[gen_idx] = gt_text
  34. break
  35. return generated_array
  36. '''
  37. gts = 'Hello Kitty 於2018年,加入YouTube開始活動,在自我介紹的影片裡,Kitty表示一直憧憬著,想在YouTube跟大家見面,一開頻道就吸引許多粉絲訂閱,目前有28萬訂閱者,接下來這位花生君,於2017年加入YouTube開始活動,他的外型太過特別,花生頭、紅色圍巾與紙尿布,被觀眾評價為,第一眼看上很噁心,但看著看著還挺可愛,目前有12萬訂閱者'.split(',')
  38. gens = ['Hello Kitty瑜2018年加入YouTube開始活動','再次我介紹的影片裡','Kitty表示一直憧憬著長在YouTube跟大家見面','一開頻道就吸引許多粉絲訂閱付錢有28萬訂閱者','接下來這位花生君瑜2017年加入YouTube開始湖','活動','他的外型太過特別花生桃紅色圍巾魚紙尿布','被觀眾評價為第一眼看上很噁心但看著看著還挺','秦可愛','目前有12萬訂閱者']
  39. adjs = adjustSub_by_gt_array(gts,gens)
  40. for s in adjs:
  41. print(s)
  42. '''
  43. import difflib
  44. gts = 'Hello Kitty 於2018年,加入YouTube開始活動,在自我介紹的影片裡,Kitty表示一直憧憬著,想在YouTube跟大家見面,一開頻道就吸引許多粉絲訂閱,目前有28萬訂閱者,接下來這位花生君,於2017年加入YouTube開始活動,他的外型太過特別,花生頭、紅色圍巾與紙尿布,被觀眾評價為,第一眼看上很噁心,但看著看著還挺可愛,目前有12萬訂閱者'.split(',')
  45. gens = ['Hello Kitty瑜2018年加入YouTube開始活動','再次我介紹的影片裡','Kitty表示一直憧憬著長在YouTube跟大家見面','一開頻道就吸引許多粉絲訂閱付錢有28萬訂閱者','接下來這位花生君瑜2017年加入YouTube開始湖','活動','他的外型太過特別花生桃紅色圍巾魚紙尿布','被觀眾評價為第一眼看上很噁心但看著看著還挺','秦可愛','目前有12萬訂閱者']
  46. two = [' '.join([i,j]) for i,j in zip(gts, gts[1:])]
  47. three = [' '.join([i,j,k]) for i,j,k in zip(gts, gts[1:], gts[2:])]
  48. alls = gts+two+three
  49. for g in gens:
  50. if len(difflib.get_close_matches(g, alls, cutoff=0.1))!=0:
  51. print(g+' = '+difflib.get_close_matches(g, alls, cutoff=0.1)[0])
  52. else:
  53. print(g)