6.7 KiB
6.7 KiB
transcription_languages.py - 音声認識言語マッピング
概要
音声認識エンジンが対応する言語コードのマッピングテーブルを提供するモジュールです。異なる音声認識エンジンの言語コード仕様の差異を吸収し、統一的なインターフェースを提供します。
主要機能
言語マッピングテーブル
- 表示用言語名から各エンジン固有の言語コードへの変換
- 国・地域固有の言語バリエーション対応
- 複数音声認識エンジンの統一的な言語管理
対応エンジン
- Google Speech Recognition
- OpenAI Whisper(faster-whisper)
- その他の音声認識エンジン
データ構造
transcription_lang
transcription_lang: Dict[str, List[Dict[str, str]]]
言語とその地域バリエーションのマッピング
transcription_lang = {
"English": [
{"country": "United States", "google_language_code": "en-US"},
{"country": "United Kingdom", "google_language_code": "en-GB"},
{"country": "Australia", "google_language_code": "en-AU"}
],
"Japanese": [
{"country": "Japan", "google_language_code": "ja-JP"}
],
"Korean": [
{"country": "South Korea", "google_language_code": "ko-KR"}
]
}
使用方法
基本的な言語コード取得
from models.transcription.transcription_languages import transcription_lang
# 日本語の言語コード取得
japanese_codes = transcription_lang.get("Japanese", [])
if japanese_codes:
code = japanese_codes[0]["google_language_code"] # "ja-JP"
# 英語の地域別言語コード取得
english_codes = transcription_lang.get("English", [])
for region in english_codes:
print(f"{region['country']}: {region['google_language_code']}")
利用可能言語の一覧取得
# 対応言語の一覧
supported_languages = list(transcription_lang.keys())
print(f"対応言語: {supported_languages}")
# 言語と国の組み合わせ一覧
language_country_pairs = []
for lang, countries in transcription_lang.items():
for country_data in countries:
language_country_pairs.append({
"language": lang,
"country": country_data["country"],
"code": country_data["google_language_code"]
})
翻訳システムとの連携
# 翻訳システムで対応している言語の確認
from models.translation.translation_languages import translation_lang
transcription_langs = list(transcription_lang.keys())
translation_langs = []
for engine in translation_lang.keys():
translation_langs.extend(translation_lang[engine]["source"].keys())
# 音声認識と翻訳の両方で対応している言語
supported_langs = list(filter(lambda x: x in transcription_langs, translation_langs))
主要対応言語
西欧言語
- English: US, UK, Australia, Canada, India, South Africa
- Spanish: Spain, Mexico, Argentina, Colombia
- French: France, Canada, Belgium
- German: Germany, Austria, Switzerland
- Italian: Italy
- Portuguese: Brazil, Portugal
アジア言語
- Japanese: Japan
- Korean: South Korea
- Chinese: China (Simplified), Taiwan (Traditional), Hong Kong
- Thai: Thailand
- Vietnamese: Vietnam
その他の言語
- Russian: Russia
- Arabic: Saudi Arabia, UAE, Egypt
- Hindi: India
- Dutch: Netherlands
- Swedish: Sweden
- Norwegian: Norway
エンジン別言語コード形式
Google Speech Recognition
- RFC 5646準拠の言語タグ形式
- 例: "ja-JP", "en-US", "zh-CN"
OpenAI Whisper
- ISO 639-1言語コード(2文字)
- 例: "ja", "en", "zh"
その他のエンジン
- エンジン固有の形式に対応
- マッピングテーブルによる変換
地域対応
同一言語の地域別対応
# 英語の地域バリエーション
"English": [
{"country": "United States", "google_language_code": "en-US"},
{"country": "United Kingdom", "google_language_code": "en-GB"},
{"country": "Australia", "google_language_code": "en-AU"},
{"country": "Canada", "google_language_code": "en-CA"},
{"country": "India", "google_language_code": "en-IN"}
]
方言・変種対応
# 中国語の簡体字・繁体字対応
"Chinese Simplified": [
{"country": "China", "google_language_code": "zh-CN"}
],
"Chinese Traditional": [
{"country": "Taiwan", "google_language_code": "zh-TW"},
{"country": "Hong Kong", "google_language_code": "zh-HK"}
]
統合利用
VRCTでの利用例
def get_supported_transcription_languages():
"""音声認識対応言語の取得"""
languages = []
for language, countries in transcription_lang.items():
for country_data in countries:
languages.append({
"language": language,
"country": country_data["country"],
"display_name": f"{language} ({country_data['country']})",
"code": country_data["google_language_code"]
})
return languages
エラーハンドリング
def get_language_code(language: str, country: str = None) -> str:
"""安全な言語コード取得"""
try:
countries = transcription_lang.get(language, [])
if not countries:
return "en-US" # フォールバック
if country:
for country_data in countries:
if country_data["country"] == country:
return country_data["google_language_code"]
# 国指定なしまたは見つからない場合は最初の項目を返す
return countries[0]["google_language_code"]
except (KeyError, IndexError):
return "en-US" # エラー時のフォールバック
拡張性
新言語の追加
# 新しい言語の追加例
transcription_lang["Turkish"] = [
{"country": "Turkey", "google_language_code": "tr-TR"}
]
新エンジンへの対応
# 新しいエンジンのコードフィールドを追加
transcription_lang["English"][0]["azure_language_code"] = "en-US"
transcription_lang["English"][0]["aws_language_code"] = "en-US"
注意事項
- 言語コードは各エンジンの仕様に依存
- 新しいエンジン追加時は対応コードの追加が必要
- 地域固有の音声認識精度差に注意
- エンジンによってサポート言語が異なる場合がある
関連モジュール
transcription_transcriber.py: 音声認識エンジン本体translation_languages.py: 翻訳エンジン言語マッピングconfig.py: 言語設定管理controller.py: 言語選択UI制御