Merge branch 'bugfix#11_koneko' into develop
This commit is contained in:
12
VRCT.py
12
VRCT.py
@@ -33,17 +33,17 @@ class App(customtkinter.CTk):
|
||||
self.FONT_FAMILY = "Yu Gothic UI"
|
||||
## Translation
|
||||
self.CHOICE_TRANSLATOR = "DeepL(web)"
|
||||
self.INPUT_SOURCE_LANG = "JA"
|
||||
self.INPUT_TARGET_LANG = "EN"
|
||||
self.OUTPUT_SOURCE_LANG = "EN"
|
||||
self.OUTPUT_TARGET_LANG = "JA"
|
||||
self.INPUT_SOURCE_LANG = "Japanese"
|
||||
self.INPUT_TARGET_LANG = "English"
|
||||
self.OUTPUT_SOURCE_LANG = "English"
|
||||
self.OUTPUT_TARGET_LANG = "Japanese"
|
||||
## Transcription
|
||||
self.CHOICE_MIC_DEVICE = self.vr.search_default_device()[0]
|
||||
self.INPUT_MIC_VOICE_LANGUAGE = "ja-JP"
|
||||
self.INPUT_MIC_VOICE_LANGUAGE = "Japanese Japan"
|
||||
self.INPUT_MIC_IS_DYNAMIC = False
|
||||
self.INPUT_MIC_THRESHOLD = 300
|
||||
self.CHOICE_SPEAKER_DEVICE = self.vr.search_default_device()[1]
|
||||
self.INPUT_SPEAKER_VOICE_LANGUAGE = "en-US"
|
||||
self.INPUT_SPEAKER_VOICE_LANGUAGE = "English United States"
|
||||
self.INPUT_SPEAKER_INTERVAL = 4
|
||||
|
||||
## Parameter
|
||||
|
||||
282
languages.py
Normal file
282
languages.py
Normal file
@@ -0,0 +1,282 @@
|
||||
recognize_lang = {
|
||||
"Japanese Japan":"ja-JP",
|
||||
"English United States":"en-US",
|
||||
"English United Kingdom":"en-GB",
|
||||
"Afrikaans South Africa":"af-ZA",
|
||||
"Arabic Algeria":"ar-DZ",
|
||||
"Arabic Bahrain":"ar-BH",
|
||||
"Arabic Egypt":"ar-EG",
|
||||
"Arabic Israel":"ar-IL",
|
||||
"Arabic Iraq":"ar-IQ",
|
||||
"Arabic Jordan":"ar-JO",
|
||||
"Arabic Kuwait":"ar-KW",
|
||||
"Arabic Lebanon":"ar-LB",
|
||||
"Arabic Morocco":"ar-MA",
|
||||
"Arabic Oman":"ar-OM",
|
||||
"Arabic Palestinian Territory":"ar-PS",
|
||||
"Arabic Qatar":"ar-QA",
|
||||
"Arabic Saudi Arabia":"ar-SA",
|
||||
"Arabic Tunisia":"ar-TN",
|
||||
"Arabic UAE":"ar-AE",
|
||||
"Euskara Spain":"eu-ES",
|
||||
"Bulgarian Bulgaria":"bg-BG",
|
||||
"Catalan Spain":"ca-ES",
|
||||
"Mongolian China (Simp.)":"cmn-Hans-CN",
|
||||
"Mongolian Hong Kong SAR (Trad.)":"cmn-Hans-HK",
|
||||
"Mongolian Taiwan (Trad.)":"cmn-Hant-TW",
|
||||
"Cantonese Hong Kong":"yue-Hant-HK",
|
||||
"Hrvatska Croatia":"hr_HR",
|
||||
"Czech Republic":"cs-CZ",
|
||||
"Danish Denmark":"da-DK",
|
||||
"English Australia":"en-AU",
|
||||
"English Canada":"en-CA",
|
||||
"English India":"en-IN",
|
||||
"English Ireland":"en-IE",
|
||||
"English New Zealand":"en-NZ",
|
||||
"English Philippines":"en-PH",
|
||||
"English South Africa":"en-ZA",
|
||||
"Persian Iran":"fa-IR",
|
||||
"French France":"fr-FR",
|
||||
"Filipino Philippines":"fil-PH",
|
||||
"Galician Spain":"gl-ES",
|
||||
"German Germany":"de-DE",
|
||||
"Greek Greece":"el-GR",
|
||||
"Finnish Finland":"fi-FI",
|
||||
"Hebrew Israel":"he-IL",
|
||||
"Hindi India":"hi-IN",
|
||||
"Hungarian Hungary":"hu-HU",
|
||||
"Indonesian Indonesia":"id-ID",
|
||||
"Icelandic Iceland":"is-IS",
|
||||
"Italian Italy":"it-IT",
|
||||
"Italian Switzerland":"it-CH",
|
||||
"Korean Korea":"ko-KR",
|
||||
"Lithuanian Lithuania":"lt-LT",
|
||||
"Malay Malaysia":"ms-MY",
|
||||
"Nederlands Netherlands":"nl-NL",
|
||||
"Bokmål Norway":"nb-NO",
|
||||
"Polski Poland":"pl-PL",
|
||||
"Português Brazil":"pt-BR",
|
||||
"Português Portugal":"pt-PT",
|
||||
"limba română Romania":"ro-RO",
|
||||
"Russian Russia":"ru-RU",
|
||||
"Serbian Serbia":"sr-RS",
|
||||
"Slovak Slovakia":"sk-SK",
|
||||
"Slovenian Slovenia":"sl-SI",
|
||||
"Spanish Argentina":"es-AR",
|
||||
"Spanish Bolivia":"es-BO",
|
||||
"Spanish Chile":"es-CL",
|
||||
"Spanish Colombia":"es-CO",
|
||||
"Spanish Costa Rica":"es-CR",
|
||||
"Spanish Dominican Republic":"es-DO",
|
||||
"Spanish Ecuador":"es-EC",
|
||||
"Spanish El Salvador":"es-SV",
|
||||
"Spanish Guatemala":"es-GT",
|
||||
"Spanish Honduras":"es-HN",
|
||||
"Spanish México":"es-MX",
|
||||
"Spanish Nicaragua":"es-NI",
|
||||
"Spanish Panamá":"es-PA",
|
||||
"Spanish Paraguay":"es-PY",
|
||||
"Spanish Perú":"es-PE",
|
||||
"Spanish Puerto Rico":"es-PR",
|
||||
"Spanish Spain":"es-ES",
|
||||
"Spanish Uruguay":"es-UY",
|
||||
"Spanish United States":"es-US",
|
||||
"Spanish Venezuela":"es-VE",
|
||||
"Swedish Sweden":"sv-SE",
|
||||
"Thai Thailand":"th-TH",
|
||||
"Turkish Turkey":"tr-TR",
|
||||
"Ukrainian Ukraine":"uk-UA",
|
||||
"Vietnamese Viet Nam":"vi-VN",
|
||||
"Zulu South Africa":"zu-ZA"
|
||||
}
|
||||
|
||||
deepl_lang = {
|
||||
"Japanese":"ja",
|
||||
"English American":"en-US",
|
||||
"English British":"en-GB",
|
||||
"Bulgarian":"bg",
|
||||
"Czech":"cs",
|
||||
"Danish":"da",
|
||||
"German":"de",
|
||||
"Greek":"el",
|
||||
"English":"en",
|
||||
"Spanish":"es",
|
||||
"Estonian":"et",
|
||||
"Finnish":"fi",
|
||||
"French":"fr",
|
||||
"Hungarian":"hu",
|
||||
"Indonesian":"id",
|
||||
"Italian":"it",
|
||||
"Korean":"ko",
|
||||
"Lithuanian":"lt",
|
||||
"Latvian":"lv",
|
||||
"Norwegian":"nb",
|
||||
"Dutch":"nl",
|
||||
"Polish":"pl",
|
||||
"Portuguese":"pt",
|
||||
"Portuguese Brazilian":"pt-BR",
|
||||
"Portuguese European":"pt-PT",
|
||||
"Romanian":"ro",
|
||||
"Russian":"ru",
|
||||
"Slovak":"sk",
|
||||
"Slovenian":"sl",
|
||||
"Swedish":"sv",
|
||||
"Turkish":"tr",
|
||||
"Ukrainian":"uk",
|
||||
"Chinese":"zh"
|
||||
}
|
||||
|
||||
deepl_translate_lang = {
|
||||
"Japanese":"JA",
|
||||
"English":"EN",
|
||||
"Bulgarian":"BG",
|
||||
"Chinese":"ZH",
|
||||
"Czech":"CS",
|
||||
"Danish":"DA",
|
||||
"Dutch":"NL",
|
||||
"Estonian":"ET",
|
||||
"Finnish":"FI",
|
||||
"French":"FR",
|
||||
"German":"DE",
|
||||
"Greek":"EL",
|
||||
"Hungarian":"HU",
|
||||
"Italian":"IT",
|
||||
"Latvian":"LV",
|
||||
"Lithuanian":"LT",
|
||||
"Polish":"PL",
|
||||
"Portuguese":"PT",
|
||||
"Romanian":"RO",
|
||||
"Russian":"RU",
|
||||
"Slovak":"SK",
|
||||
"Slovenian":"SL",
|
||||
"Spanish":"ES",
|
||||
"Swedish":"SV"
|
||||
}
|
||||
|
||||
translators_bing_lang = {
|
||||
"japanese":"ja",
|
||||
"english":"en",
|
||||
"chinese":"zh",
|
||||
"arabic":"ar",
|
||||
"russian":"ru",
|
||||
"french":"fr",
|
||||
"german":"de",
|
||||
"spanish":"es",
|
||||
"portuguese":"pt",
|
||||
"italian":"it",
|
||||
"korean":"ko",
|
||||
"greek":"el",
|
||||
"dutch":"nl",
|
||||
"hindi":"hi",
|
||||
"turkish":"tr",
|
||||
"malay":"ms",
|
||||
"thai":"th",
|
||||
"vietnamese":"vi",
|
||||
"indonesian":"id",
|
||||
"hebrew":"he",
|
||||
"polish":"pl",
|
||||
"czech":"cs",
|
||||
"hungarian":"hu",
|
||||
"estonian":"et",
|
||||
"bulgarian":"bg",
|
||||
"danish":"da",
|
||||
"finnish":"fi",
|
||||
"romanian":"ro",
|
||||
"swedish":"sv",
|
||||
"slovenian":"sl",
|
||||
"persian/farsi":"fa",
|
||||
"bosnian":"bs",
|
||||
"serbian":"sr",
|
||||
"fijian":"fj",
|
||||
"filipino":"tl",
|
||||
"haitiancreole":"ht",
|
||||
"catalan":"ca",
|
||||
"croatian":"hr",
|
||||
"latvian":"lv",
|
||||
"lithuanian":"lt",
|
||||
"urdu":"ur",
|
||||
"ukrainian":"uk",
|
||||
"welsh":"cy",
|
||||
"tahiti":"ty",
|
||||
"tongan":"to",
|
||||
"swahili":"sw",
|
||||
"samoan":"sm",
|
||||
"slovak":"sk",
|
||||
"afrikaans":"af",
|
||||
"norwegian":"no",
|
||||
"bengali":"bn",
|
||||
"malagasy":"mg",
|
||||
"maltese":"mt",
|
||||
"queretaro otomi":"otq",
|
||||
"klingon/tlhingan hol":"tlh",
|
||||
"gujarati":"gu",
|
||||
"tamil":"ta",
|
||||
"telugu":"te",
|
||||
"punjabi":"pa",
|
||||
"irish":"ga"
|
||||
}
|
||||
|
||||
translators_google_lang = {
|
||||
"japanese":"ja",
|
||||
"english":"en",
|
||||
"chinese":"zh",
|
||||
"arabic":"ar",
|
||||
"russian":"ru",
|
||||
"french":"fr",
|
||||
"german":"de",
|
||||
"spanish":"es",
|
||||
"portuguese":"pt",
|
||||
"italian":"it",
|
||||
"korean":"ko",
|
||||
"greek":"el",
|
||||
"dutch":"nl",
|
||||
"hindi":"hi",
|
||||
"turkish":"tr",
|
||||
"malay":"ms",
|
||||
"thai":"th",
|
||||
"vietnamese":"vi",
|
||||
"indonesian":"id",
|
||||
"hebrew":"he",
|
||||
"polish":"pl",
|
||||
"mongolian":"mn",
|
||||
"czech":"cs",
|
||||
"hungarian":"hu",
|
||||
"estonian":"et",
|
||||
"bulgarian":"bg",
|
||||
"danish":"da",
|
||||
"finnish":"fi",
|
||||
"romanian":"ro",
|
||||
"swedish":"sv",
|
||||
"slovenian":"sl",
|
||||
"persian/farsi":"fa",
|
||||
"bosnian":"bs",
|
||||
"serbian":"sr",
|
||||
"filipino":"tl",
|
||||
"haitiancreole":"ht",
|
||||
"catalan":"ca",
|
||||
"croatian":"hr",
|
||||
"latvian":"lv",
|
||||
"lithuanian":"lt",
|
||||
"urdu":"ur",
|
||||
"ukrainian":"uk",
|
||||
"welsh":"cy",
|
||||
"swahili":"sw",
|
||||
"samoan":"sm",
|
||||
"slovak":"sk",
|
||||
"afrikaans":"af",
|
||||
"norwegian":"no",
|
||||
"bengali":"bn",
|
||||
"malagasy":"mg",
|
||||
"maltese":"mt",
|
||||
"gujarati":"gu",
|
||||
"tamil":"ta",
|
||||
"telugu":"te",
|
||||
"punjabi":"pa",
|
||||
"amharic":"am",
|
||||
"azerbaijani":"az",
|
||||
"belarusian":"be",
|
||||
"cebuano":"ceb",
|
||||
"esperanto":"eo",
|
||||
"basque":"eu",
|
||||
"irish":"ga"
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import queue
|
||||
import speech_recognition as sr
|
||||
import pyaudiowpatch as pyaudio
|
||||
import languages
|
||||
|
||||
# VoiceRecognizer
|
||||
class VoiceRecognizer():
|
||||
@@ -8,25 +9,17 @@ class VoiceRecognizer():
|
||||
self.r = sr.Recognizer()
|
||||
self.p = pyaudio.PyAudio()
|
||||
|
||||
self.languages = [
|
||||
"ja-JP","en-US","en-GB","af-ZA","ar-DZ","ar-BH","ar-EG","ar-IL","ar-IQ","ar-JO","ar-KW","ar-LB","ar-MA",
|
||||
"ar-OM","ar-PS","ar-QA","ar-SA","ar-TN","ar-AE","eu-ES","bg-BG","ca-ES","cmn-Hans-CN","cmn-Hans-HK",
|
||||
"cmn-Hant-TW","yue-Hant-HK","hr_HR","cs-CZ","da-DK","en-AU","en-CA","en-IN","en-IE","en-NZ","en-PH",
|
||||
"en-ZA","fa-IR","fr-FR","fil-PH","gl-ES","de-DE","el-GR","fi-FI","he-IL","hi-IN","hu-HU","id-ID","is-IS",
|
||||
"it-IT","it-CH","ko-KR","lt-LT","ms-MY","nl-NL","nb-NO","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","sr-RS",
|
||||
"sk-SK","sl-SI","es-AR","es-BO","es-CL","es-CO","es-CR","es-DO","es-EC","es-SV","es-GT","es-HN","es-MX",
|
||||
"es-NI","es-PA","es-PY","es-PE","es-PR","es-ES","es-UY","es-US","es-VE","sv-SE","th-TH","tr-TR","uk-UA",
|
||||
"vi-VN","zu-ZA"
|
||||
]
|
||||
self.dict_languages = languages.recognize_lang
|
||||
self.languages = list(self.dict_languages.keys())
|
||||
self.mic_device_name = None
|
||||
self.mic_threshold = 50
|
||||
self.mic_is_dynamic = False
|
||||
self.mic_language = "ja-JP"
|
||||
self.mic_language = "Japanese Japan"
|
||||
self.mic_queue = queue.Queue(10)
|
||||
|
||||
self.spk_device = None
|
||||
self.spk_interval = 3
|
||||
self.spk_language = "ja-JP"
|
||||
self.spk_language = "Japanese Japan"
|
||||
self.spk_stream = None
|
||||
self.spk_queue = queue.Queue(10)
|
||||
|
||||
@@ -77,7 +70,7 @@ class VoiceRecognizer():
|
||||
break
|
||||
return name_mic, name_spk
|
||||
|
||||
def set_mic(self, device_name, threshold=50, is_dynamic=False, language="ja-JP"):
|
||||
def set_mic(self, device_name, threshold=50, is_dynamic=False, language="Japanese Japan"):
|
||||
input_device_list = self.search_input_device()
|
||||
self.mic_device_name = [device["index"] for device in input_device_list if device["name"] == device_name][0]
|
||||
self.mic_threshold = threshold
|
||||
@@ -101,12 +94,12 @@ class VoiceRecognizer():
|
||||
def recognize_mic(self):
|
||||
try:
|
||||
audio = self.mic_queue.get()
|
||||
text = self.r.recognize_google(audio, language=self.mic_language)
|
||||
text = self.r.recognize_google(audio, language=self.dict_languages[self.mic_language])
|
||||
except:
|
||||
text = ""
|
||||
return text
|
||||
|
||||
def set_spk(self, device_name, interval, language):
|
||||
def set_spk(self, device_name, interval=4, language="Japanese Japan"):
|
||||
output_device_list = self.search_output_device()
|
||||
self.spk_device = [device for device in output_device_list if device["name"] == device_name][0]
|
||||
self.spk_interval = interval
|
||||
@@ -147,7 +140,7 @@ class VoiceRecognizer():
|
||||
try:
|
||||
in_data = self.spk_queue.get()
|
||||
audio_data = sr.AudioData(in_data, int(self.spk_device["defaultSampleRate"]), self.spk_interval)
|
||||
text = self.r.recognize_google(audio_data, language=self.spk_language)
|
||||
text = self.r.recognize_google(audio_data, language=self.dict_languages[self.spk_language])
|
||||
except:
|
||||
text = ""
|
||||
return text
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import deepl
|
||||
import deepl_translate
|
||||
import translators as ts
|
||||
import languages
|
||||
|
||||
# Translator
|
||||
class Translator():
|
||||
@@ -11,30 +12,18 @@ class Translator():
|
||||
"Google(web)": False,
|
||||
"Bing(web)": False,
|
||||
}
|
||||
|
||||
self.dict_languages = {}
|
||||
self.dict_languages["DeepL(web)"] = languages.deepl_translate_lang
|
||||
self.dict_languages["DeepL(auth)"] = languages.deepl_lang
|
||||
self.dict_languages["Google(web)"] = languages.translators_google_lang
|
||||
self.dict_languages["Bing(web)"] = languages.translators_bing_lang
|
||||
|
||||
self.languages = {}
|
||||
self.languages["DeepL(web)"] = [
|
||||
"JA","EN","BG","ZH","CS","DA","NL","ET","FI","FR","DE","EL","HU","IT",
|
||||
"LV","LT","PL","PT","RO","RU","SK","SL","ES","SV",
|
||||
]
|
||||
self.languages["DeepL(auth)"] = [
|
||||
"JA","EN-US","EN-GB","BG","CS","DA","DE","EL","ES","ET","FI","FR","HU",
|
||||
"ID","IT","KO","LT","LV","NB","NL","PL","PT","PT-BR","PT-PT","RO","RU",
|
||||
"SK","SL","SV","TR","UK","ZH",
|
||||
]
|
||||
self.languages["Google(web)"] = [
|
||||
"ja","en","zh","ar","ru","fr","de","es","pt","it","ko","el","nl","hi",
|
||||
"tr","ms","th","vi","id","he","pl","mn","cs","hu","et","bg","da","fi",
|
||||
"ro","sv","sl","fa","bs","sr","tl","ht","ca","hr","lv","lt","ur","uk",
|
||||
"cy","sw","sm","sk","af","no","bn","mg","mt","gu","ta","te","pa","am",
|
||||
"az","be","ceb","eo","eu","ga"
|
||||
]
|
||||
self.languages["Bing(web)"] = [
|
||||
"ja","en","zh","ar","ru","fr","de","es","pt","it","ko","el","nl","hi",
|
||||
"tr","ms","th","vi","id","he","pl","cs","hu","et","bg","da","fi","ro",
|
||||
"sv","sl","fa","bs","sr","fj","tl","ht","ca","hr","lv","lt","ur","uk",
|
||||
"cy","ty","to","sw","sm","sk","af","no","bn","mg","mt","otq","tlh","gu",
|
||||
"ta","te","pa","ga"
|
||||
]
|
||||
self.languages["DeepL(web)"] = list(self.dict_languages["DeepL(web)"].keys())
|
||||
self.languages["DeepL(auth)"] = list(self.dict_languages["DeepL(auth)"].keys())
|
||||
self.languages["Google(web)"] = list(self.dict_languages["Google(web)"].keys())
|
||||
self.languages["Bing(web)"] = list(self.dict_languages["Bing(web)"].keys())
|
||||
self.deepl_client = None
|
||||
|
||||
def authentication(self, translator_name, authkey=None):
|
||||
@@ -62,13 +51,31 @@ class Translator():
|
||||
result = False
|
||||
try:
|
||||
if translator_name == "DeepL(web)":
|
||||
result = deepl_translate.translate(source_language=source_language, target_language=target_language, text=message)
|
||||
result = deepl_translate.translate(
|
||||
source_language=self.dict_languages["DeepL(web)"][source_language],
|
||||
target_language=self.dict_languages["DeepL(web)"][target_language],
|
||||
text=message
|
||||
)
|
||||
elif translator_name == "DeepL(auth)":
|
||||
result = self.deepl_client.translate_text(message, source_lang=source_language, target_lang=target_language).text
|
||||
result = self.deepl_client.translate_text(
|
||||
message,
|
||||
source_lang=self.dict_languages["DeepL(auth)"][source_language],
|
||||
target_lang=self.dict_languages["DeepL(auth)"][target_language],
|
||||
).text
|
||||
elif translator_name == "Google(web)":
|
||||
result = ts.translate_text(query_text=message, translator="google", from_language=source_language, to_language=target_language)
|
||||
result = ts.translate_text(
|
||||
query_text=message,
|
||||
translator="google",
|
||||
from_language=self.dict_languages["Google(web)"][source_language],
|
||||
to_language=self.dict_languages["Google(web)"][target_language],
|
||||
)
|
||||
elif translator_name == "Bing(web)":
|
||||
result = ts.translate_text(query_text=message, translator="bing", from_language=source_language, to_language=target_language)
|
||||
result = ts.translate_text(
|
||||
query_text=message,
|
||||
translator="bing",
|
||||
from_language=self.dict_languages["Bing(web)"][source_language],
|
||||
to_language=self.dict_languages["Bing(web)"][target_language],
|
||||
)
|
||||
except:
|
||||
pass
|
||||
return result
|
||||
Reference in New Issue
Block a user