Skip to content

Commit

Permalink
add Simplified Chinese and Traditional Chinese convert function #77
Browse files Browse the repository at this point in the history
  • Loading branch information
CheshireCC committed Mar 5, 2024
1 parent 08a7a5f commit ba6207b
Show file tree
Hide file tree
Showing 7 changed files with 3,662 additions and 3,568 deletions.
450 changes: 232 additions & 218 deletions en.ts

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions fasterWhisperGUIConfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
"model_param": {
"localModel": true,
"onlineModel": false,
"model_path": "",
"model_path": "F:/WhisperModels/faster-whisper/large-v3-float32",
"modelName": 0,
"use_v3_model": false,
"use_v3_model": true,
"device": 1,
"deviceIndex": "0",
"preciese": 0,
Expand All @@ -31,15 +31,15 @@
"setting": {
"saveConfig": true,
"autoLoadModel": false,
"language": 0,
"language": 2,
"huggingface_user_token": "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",
"autoGoToOutputPage": 2,
"autoClearTempFiles": true,
"themeColor": "#009faa"
},
"Transcription_param": {
"aggregate_contents": true,
"language": 3,
"language": 2,
"task": false,
"beam_size": "5",
"best_of": "5",
Expand Down Expand Up @@ -67,7 +67,7 @@
"tabMovable": false,
"tabScrollable": false,
"tabShadowEnabled": false,
"tabMaxWidth": 253,
"tabMaxWidth": 205,
"closeDisplayMode": 0,
"whisperXMinSpeaker": 3,
"whisperXMaxSpeaker": 3,
Expand Down
75 changes: 63 additions & 12 deletions faster_whisper_GUI/mainWindows.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
)

from faster_whisper.transcribe import TranscriptionInfo
from faster_whisper import Word

import torch

from .config import (
Expand Down Expand Up @@ -60,6 +62,9 @@
from .util import outputWithDateTime
from .split_audio import SplitAudioFileWithSpeakersWorker

import opencc


# =======================================================================================
# SignalStore
# =======================================================================================
Expand Down Expand Up @@ -397,6 +402,7 @@ def transcribeProcess(self):
# 转写参数
Transcribe_params : dict = self.getParamTranscribe()

print(f"language:{Transcribe_params['language']}")
print("Transcribes options:")
self.log.write("Transcribes options:\n")

Expand Down Expand Up @@ -558,6 +564,44 @@ def createResultInTable(self, results):

print(f"len_model: {len(self.tableModel_list)}")

def simplifiedAndTraditionalChineseConvert(self, segments, language):
# 設置轉換器
if language == "Auto" or language == "zhs":
print(f"convert to Simplified Chinese")
print(f"len:{len(segments)}")
cc = opencc.OpenCC('t2s')

# for segment in segment_:
# new_text = cc.convert(segment.text)
# print(f"[{segment.text} --> {new_text}]")
# segment.text = new_text
# print(f"len_words: {len(segment.words)}")
# if len(segment.words) > 0:
# for word in segment.words:
# new_word = cc.convert(word.word)
# print(f" {word.word} --> {new_word}")
# word.word = new_word
elif language == "zht":
print(f"convert to Traditional Chinese")
print(f"len:{len(segments)}")
cc = opencc.OpenCC('s2t')

# 轉換簡繁
for segment in segments:

new_text = cc.convert(segment.text)
# print(f"[{segment.text} --> {new_text}]")
segment.text = new_text
# print(f"len_words: {len(segment.words)}")
if len(segment.words) > 0:

for word in segment.words:
new_word = cc.convert(word.word)
# print(f" {word.word} --> {new_word}")

word = Word(word.start,word.end,new_word,word.probability)
# word.word = new_word

def transcribeOver(self, segments_path_info:list):
# self.button_process.clicked.disconnect(self.cancelTrancribe)
# self.button_process.clicked.connect(self.onButtonProcessClicked)
Expand All @@ -582,13 +626,15 @@ def transcribeOver(self, segments_path_info:list):
)

self.result_faster_whisper = segments_path_info
# for segments in self.result_faster_whisper:
# segment_, path, info = segments
# print(path, info.language)
# print(f"len:{len(segment_)}")
# for segment in segment_:
# print(f"[{segment.start}s --> {segment.end}] | {segment.text}")
# print(f"len_words: {len(segment.words)}")

for segments in self.result_faster_whisper:
segment_, path, info = segments
if info.language == "zh":
print(path, info.language)
language_param = self.page_transcribes.combox_language.currentText().split("-")[0]

self.simplifiedAndTraditionalChineseConvert(segment_,language_param)


print(f"len_segments_path_info_result: {len(segments_path_info)}")
self.showResultInTable(self.result_faster_whisper)
Expand Down Expand Up @@ -622,7 +668,7 @@ def getParamTranscribe(self) -> dict:
language = None
if language in ["zht","zhs"]:
language = "zh"

Transcribe_params["language"] = language

task = self.page_transcribes.switchButton_Translate_to_English.isChecked()
Expand Down Expand Up @@ -1115,11 +1161,13 @@ def openExcitedFiles(self):
self.raiseErrorInfoBar(self.tr("读取字幕文件失败"), self.tr("读取失败 文件可能使用了不同的编码\n检查 fasterwhispergui.log 文件可能会获取更多信息"))
return
# 输出字幕文件内容
for segment in segments:
print(f"[{segment.start}s --> {segment.end}s] | {segment.speaker+':'+segment.text if segment.speaker else segment.text}")
# for segment in segments:
# print(f"[{segment.start}s --> {segment.end}s] | {segment.speaker+':'+segment.text if segment.speaker else segment.text}")

language = self.page_transcribes.combox_language.currentText().split("-")[0]

info = TranscriptionInfo(
language=self.page_transcribes.combox_language.currentText().split("-")[0],
language="zh" if language in ["zhs","zht"] else language,
language_probability=1,
duration=None,
duration_after_vad=None,
Expand All @@ -1128,6 +1176,9 @@ def openExcitedFiles(self):
vad_options={}
)

if language in ["zhs", "zht"]:
self.simplifiedAndTraditionalChineseConvert(segments, language)

if file_subtitle_fileName and file:
self.result_whisperx_aligment = None
self.result_whisperx_speaker_diarize = None
Expand Down Expand Up @@ -1334,7 +1385,7 @@ def outputAudioPartWithSpeaker(self):
# self.page_output.outputAudioPartWithSpeakerButton.setEnabled(False)
self.setPageOutButtonStatus()

language = self.page_transcribes.combox_language.currentText().split("-")[0]
language = self.page_transcribes.combox_language.currentText().split("-")[-1]

output_path = self.page_output.outputGroupWidget.LineEdit_output_dir.text()
self.splitAudioFileWithSpeakerWorker = SplitAudioFileWithSpeakersWorker(self.current_result,output_path,language ,self)
Expand Down
4 changes: 2 additions & 2 deletions faster_whisper_GUI/split_audio.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def run(self):
# 数据标注文件
list_file = open(f"{output_path + '/' + '00_list.csv'}","w",encoding="utf8")
# 格式:vocal_path|speaker_name|language|text
list_file.write("vocal_path,speaker_name,language,text\n")
list_file.write("vocal_path, speaker_name, language, text\n")

for segment in segments:
# if not segment.speaker : continue
Expand All @@ -93,7 +93,7 @@ def run(self):
output_fileName = output_fileName.replace('\\','/')

# 输出标注信息
list_file.write(f"{output_fileName},{speaker},{self.language},{segment.text}\n")
list_file.write(f"{output_fileName},{speaker},{self.language},{segment.text.strip().replace(',',' ')}\n")

list_file.close()
# 完成后发送结果信号
Expand Down
14 changes: 10 additions & 4 deletions faster_whisper_GUI/transcribe.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,9 +281,12 @@ def transcribe_file(self, file) -> (TranscriptionInfo, List): # type: ignore
return info, segmentsTranscribe

def detect_Audio_info(self, info):
language = Language_dict[info.language]
if language:
language = language.capitalize()
if info.language != "zh":
language = Language_dict[info.language]
if language:
language = language.capitalize()
else:
language = "Chinese"
language_probability = info.language_probability
duration = info.duration
duration = secondsToHMS(duration).replace(",", ".")
Expand Down Expand Up @@ -460,7 +463,10 @@ def writeSMI(fileName:str, segments:List[segment_Transcribe], language:str, avFi
i += 1
else:
smi += " #SUB{color: white; background-color: black; font-family: Arial; font-size: 12pt; font-weight: normal; text-align: left;}"
smi += f" .{language_type_CC} {'{'} name: {Language_dict[language].capitalize()}; lang: {language}; SAMIType: CC; {'}'}\n"
if language != "zh":
smi += f" .{language_type_CC} {'{'} name: {Language_dict[language].capitalize()}; lang: {language}; SAMIType: CC; {'}'}\n"
else:
smi += f" .{language_type_CC} {'{'} name: {'Chinese'}; lang: {language}; SAMIType: CC; {'}'}\n"
smi += "-->\n"
smi += "</STYLE>\n"
smi += "</HEAD>\n"
Expand Down
Binary file modified resource/_rc/Translater/en.qm
Binary file not shown.
Loading

0 comments on commit ba6207b

Please sign in to comment.