背景
これに参加してみようって話
新しいことやることは大切で、その動機付けにはこういうイベントは最適
長いので先に結論
Zoom AI Services は、多言語翻訳用であって、方言認識はできませんでした ![]()
方言認識をする場合は、LLM を間に噛ませれば、いけるかも。
ただし、Scribe の時点で方言認識ができないと文字起こしもできないと思われる。
読み上げツールなんかで音韻などを方言で行うものが見つけられなかったので、今回はそこの検証も断念。
とりあえず、Zoom AI Services を使ってみる、という目的は達成できたけど
田舎のおばあちゃん・おじいちゃんの味方になれそうか?という点は、Zoom AI Services だけだと厳しそう、というのが現状の結論。
まぁ、今時聞き取りづらい方言を話す人は減っていってるんだけど、
以下を考えると大切な文化だよなぁと思っているので、残していきたい気持ちもある
言語的多様性があることで、以下のような利点がある、認識
- 文脈の読み取りが上手くなる
- 相手に合わせた言い換えが得意になる
- 多角的な思考ができる
- 問題解決が早くなる
敬語もこういう効果はあると思うけど、それすらもだんだんと合理的になって消えつつあるよね・・
まずは、API 環境を使えるように
ってことで、以下を参考に進めつつ記録
必要なものはメールアドレスとクレジットカードなどの決済手段だけです。無料枠の範囲でご利用いただくだけであれば、支払は発生しません。迷わず進めれば5分ほどで完了します。
クレカ登録要らないってのは、やっぱりハードル下がっていいですよね。 ![]()
まずは公式でサインアップ
| Pack | 使う場面 |
|---|---|
| Zoom Build Platform | 音声→テキスト、翻訳、要約、バッチ処理 |
| Zoom Developer Pack | Zoom会議のリアルタイム音声・映像をAI処理 |
通貨を選択します。無料枠がドルだと20ドル、円だと2000円ですので、ドルのほうが無料枠が多くなるのでお勧めです。
ってことなので、
-
$に変えて -
Zoom Build Platformを選択
ここ、Yen 表記だと 2000 credits free なのに、 2000 ってなに?って思ったけど、
ここを選択すると、2000 なんて数字は無い。
両方の credit 説明をみると以下表記があったので・・
通貨によって、Credit の価値も変わる、ということのよう。
内部通貨である Credit に 通貨レートで反映されるのが一般的な感覚だったので、ピンときにくいだけかな
US$
consume 100 credits (equivalent to $100.00 USD
Japanese Yen
consume 10000 credits (equivalent to ¥10000.00 JPY
気を取り直して sign-up 継続
Email verification
Code を入れて、Continue to address
Address
Personal Account にして、必須項目を埋めて、 Continue

Place Order
finished
API Key 取得へ
ここから飛んでいくと、

API keys が Copy 出来そう。
でいよいよ、translator を使ってみる
endpoint が不明
当初調べるの面倒で、Copilot に聞いて以下にしてたのが失敗
/v2/ai/translator
つながらねーとかやってたけど、公式ちゃんと確認していかに修正
/v2/aiservices/translator/translate
404 から 401 になったので、改めて Token 確認
API_KEY だけかと思ったら、API_SECRET も必要で、JWT にするってだけだったので、
取得ページ にいって、利用すればOK
API key, secret はどこから?
時間がたつと、え?どこだっけ?ってなりがちなページ
しかも、UI が移行最中で、見つけづらいです
このページにいって、以下なら、New UI なので、右のほうの Try new experience を OFF にしましょう
すると、見慣れた以下のページに戻ってこられます。
New UI でもきっとあるとは思うんで、なれたらそっちでも
参考
api lists
当初計画
API の機能を確認せずに Title 決めてた。
で、計画を建てたのがこんな感じ
STEP1:複数モデルでテキスト往復変換
目的:
Zoom Translator の方言理解力を、他モデルと比較しながら評価する。
やること:
- 標準語の短文を用意
- 各モデルで「標準語 → 方言」へ変換
- さらに「方言 → 標準語」へ戻す
- 以下の指標で精度を比較
- difflib(構造一致率)
- fuzzywuzzy(語彙類似度)
- sentence-transformers(意味類似度)
- 精度が良かったら、ニュアンスを人間が評価
判断基準(Zoom が次に進む条件):
- 構造一致率(difflib) 0.85 以上
- 語彙類似度(fuzzywuzzy) 85 以上
- 意味類似度(sentence-transformers) 0.90 以上
→ 3つのうち 2つ以上が高い場合のみ STEP2 へ進む
STEP2:Zoom Scribe(音声)+ Translator(標準語化)
目的:
Zoom が「方言音声」をどこまで拾えるかを評価する。
やること:
- 方言テキストを無料 TTS で読み上げ
- Scribe API に音声を投げて文字起こし
- その結果を Translator で標準語化
- STEP1 と同じ指標で比較
- 劣化ポイントを分析
STEP2 の意味:
- Zoom がテキストで方言を理解できている場合のみ価値がある
- 音声を入れたときの「劣化度」を測る追加検証
対象
対応方言
| 難易度 | 方言 | 特徴 | 翻訳難度 |
|---|---|---|---|
| 🟥 高 | 津軽弁(青森) | 音の省略・訛りが強く、語彙も独特 | 非常に難しい |
| 🟥 高 | 鹿児島弁(薩摩弁) | 音韻変化が激しく、助詞や語尾が独自 | 非常に難しい |
| 🟧 中 | 沖縄方言(ウチナーグチ) | 日本語系統だが琉球語に近い | 難しい |
| 🟧 中 | 東北弁(秋田・岩手) | 母音の曖昧化、助詞の省略 | 難しい |
| 🟨 やや中 | 名古屋弁(尾張弁) | 標準語に近いが語尾が特徴的 | やや難しい |
| 🟨 やや中 | 博多弁(福岡) | 柔らかい語尾 | やや難しい |
難易度レベル
- LEVEL 1: SVO基本(単純な主語-動詞-目的語)
- LEVEL 2: SVO拡張(形容詞や副詞の追加)
- LEVEL 3: 述語修飾(複数の修飾語)
- LEVEL 4: 複数述語(接続詞による複数の動作)
- LEVEL 5: 条件分岐(条件を含む文)
- LEVEL 6: 時系列(複数の時間表現)
- LEVEL 7: 敬語(敬語の使用)
- LEVEL 8: 比喩(比喩や表現の豊かさ)
- LEVEL 9: 会話体(日常会話のニュアンス)
- LEVEL 10: 文語体(より複雑で文語的な表現)
で、実際にやったこと
Zoom Translator は多言語観の翻訳のみ対応している、って話にようやく気付いたので・・
Step 1 で LLM と比較することすらダメじゃん。誰だよこれ考えたの!って状態
ということで・・
STEP1 の、往復変換評価のみを、Zoom Translator でやってみることにした。
API を使ってみることも大切だ、と気持ちを切り替えて ![]()
Script 実装は、ai& Inference さんの GLM5.2 さんに丸々お任せしました。
ほんと検証するのにめっちゃ役立ちました。
方言(日本語) → 英語 → 復元標準語(日本語)
方言の標準語と復元後の標準語を比較し、以下の指標で精度を測定
| 指標 | 内容 | 高い基準 |
|---|---|---|
| 構造一致率(difflib) | 文構造の一致率(0.0〜1.0) | 0.85 以上 |
| 語彙類似度(fuzzywuzzy) | 語彙レベルの類似度(0〜100) | 85 以上 |
| 意味類似度(sentence-transformers) | 意味的な類似度(0.0〜1.0) | 0.90 以上 |
ただし、 ⚠️ 今回は sentence-transformers のモデル読み込みに失敗したため、意味類似度は未取得(n/a)のまま。ちょっとやる気が失せたのでした ![]()
📊 方言別 平均スコア
選択した方言は、理解しにくいといわれるものと、知られてそうなものを選んだ
| 方言 | 平均 構造一致率 | 平均 語彙類似度 |
|---|---|---|
| 津軽弁(青森) | 0.434 | 43.3 |
| 鹿児島弁(薩摩弁) | 0.465 | 45.5 |
| 沖縄方言(ウチナーグチ) | 0.497 | 49.0 |
| 東北弁(秋田・岩手など) | 0.496 | 49.0 |
| 名古屋弁(尾張弁) | 0.493 | 48.7 |
| 博多弁(福岡) | 0.493 | 48.7 |
全体平均
- 構造一致率: 0.480
- 語彙類似度: 47.4
まぁ、なんというか、方言は厳しいんだろうなという予想通り
ただ、もしかすると、Zoom Scribe が、方言を吸収してくれる可能性も・・ ![]()
いや、そんなわけないか、方言認識したとしても、それを文字お越しするだけだよね。
📈 レベル別 傾向
単に方言だけじゃなってことで、難易度として、10段階ぐらい用意したんだけど、
想定難易度通りの認識順にはならなかった ![]()
| レベル | 構造一致率の傾向 | 語彙類似度の傾向 |
|---|---|---|
| SVO基本(L1) | 0.714(最高) | 71.0(最高) |
| 敬語(L7) | 0.600 | 60.0 |
| 時系列(L6) | 0.553 | 55.3 |
| 述語修飾(L3) | 0.522 | 52.2 |
| SVO拡張(L2) | 0.519 | 51.7 |
| 条件分岐(L5) | 0.444 | 44.0 |
| 複数述語(L4) | 0.353 | 35.3 |
| 文語体(L10) | 0.348 | 35.0 |
| 会話体(L9) | 0.314 | 31.4 |
| 比喩(L8) | 0.200(最低) | 20.0(最低) |
傾向のまとめ
- 短くシンプルな文(SVO基本・敬語)は精度が高い
- 比喩・会話体などニュアンス含む文は精度が大きく低下
- 文が長くなる(複数述語・文語体)ほど復元精度が下がる傾向
🔍 考察
Zoom Translator の特性
- 方言を直接扱えない: Zoom Translator は日本語↔英語の翻訳のみ対応。方言→標準語の直接変換はできない。当たり前です!
- 敬語化される傾向: 復元時により丁寧な表現(「〜です」「〜ください」)になりやすく、カジュアルな文で差が出る。
- 比喩の苦手さ: 「心が凍るような寒さ」が「心臓が凍りつくほど」に直訳気味になり、元の詩的表現が失われる。まぁ、英語にすることで落ちれるんだと思われ。
判断基準との比較
| 指標 | 基準 | 実測(全体平均) | 判定 |
|---|---|---|---|
| 構造一致率 | 0.85 以上 | 0.480 | ❌ |
| 語彙類似度 | 85 以上 | 47.4 | ❌ |
| 意味類似度 | 0.90 以上 | n/a | ⚠️ 未取得 |
まぁ、なんだ・・・やろうとした自分が問題だっただけ、という落ちでした。
すみません ![]()
あとがき
Zoom AI Services を使ってなんか面白いことできないかなぁと
通勤電車内で Copilot と壁打ちしてるなかで、
- 田舎のおばあちゃんとかの会話って聞き取れない!
っていう課題を思い出して、
- これを Zoom AI Services で解決出来るなら面白いんじゃない?
ってなったのでした。
Zoom_Japan さん、是非、田舎のおじいさんおばあさんと、孫たちの意思疎通と豊かな言語体系の維持のためにも、方言理解APIよろしくお願いいたします。 ![]()
って、思ったけど、それだけの需要もないから厳しいよね・・
まぁ、LLM を一枚嚙ませればいけそうなので、そういうサービスを提供すればいいだけなのかもしれない。
検証に利用したコード
GLM5.2 で生成したので、共有するほどではないですが、参加ルールに従って置いておきます。
ZOOM_API_URL = "https://api.zoom.us//v2/aiservices/translator/translate"
ZOOM_API_KEY = "***"
ZOOM_API_SECRET = "***"
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Step1 runner for Zoom API validation.
Usage:
python step1_runner.py --models zoom,aws --out results.json
This script loads test sentences from `dialect_translation_validator.py`,
runs each configured model through: standard -> dialect, dialect -> standard,
and computes difflib, fuzzywuzzy, and sentence-transformers scores.
By default it runs all built-in examples; use `--preset high_difficulty`,
`--dialects` and `--levels` to narrow the test set for higher-difficulty trials.
Adapters:
- ZoomAdapter: HTTP call to Zoom Translator if env vars are set (ZOOM_API_URL, ZOOM_API_KEY)
- AWSAdapter: uses boto3 Translate as a fallback
- MockAdapter: echo/pivot using simple identity (for testing)
Requirements: boto3, requests, fuzzywuzzy, sentence-transformers
"""
import os
import json
import argparse
import difflib
import time
from pathlib import Path
from typing import List, Dict
import jwt
from fuzzywuzzy import fuzz
try:
from sentence_transformers import SentenceTransformer, util
except Exception:
SentenceTransformer = None
util = None
from dotenv import load_dotenv
from dialect_translation_validator import create_test_sentences, TestSentence
try:
import boto3
except Exception:
boto3 = None
import requests
env_path = Path(__file__).resolve().parent / '.env'
load_dotenv(dotenv_path=env_path, override=True)
class ModelAdapter:
def standard_to_dialect(self, text: str, dialect: str) -> str:
raise NotImplementedError()
def dialect_to_standard(self, text: str, dialect: str) -> str:
raise NotImplementedError()
class ZoomAdapter(ModelAdapter):
"""Zoom Translator adapter. Configure via env vars.
ZOOM_API_URL, ZOOM_API_KEY, ZOOM_API_SECRET
"""
def __init__(self):
raw_url = os.getenv('ZOOM_API_URL')
self.url = self._clean_url(raw_url)
self.key = os.getenv('ZOOM_API_KEY')
self.secret = os.getenv('ZOOM_API_SECRET')
if not self.url or not self.key or not self.secret:
raise RuntimeError('ZOOM_API_URL, ZOOM_API_KEY or ZOOM_API_SECRET not set')
def _clean_url(self, raw_url: str) -> str:
if not raw_url:
return raw_url
cleaned = raw_url.strip()
if cleaned.upper().startswith('POST '):
cleaned = cleaned.split(' ', 1)[1]
return cleaned.strip().strip('"').strip("'")
def _get_jwt(self) -> str:
now = int(time.time())
payload = {
'iss': self.key,
'iat': now - 30,
'exp': now + 3600,
}
return jwt.encode(payload, self.secret, algorithm='HS256')
def _send(self, text: str, source_language: str, target_language: str) -> str:
payload = {
"text": text,
"config": {
"source_language": source_language,
"target_languages": [target_language],
},
"reference_id": "zoom_step1"
}
headers = {
"Authorization": f"Bearer {self._get_jwt()}",
"Content-Type": "application/json"
}
r = requests.post(self.url, headers=headers, json=payload, timeout=30)
r.raise_for_status()
data = r.json()
if not isinstance(data, dict):
raise RuntimeError(f'Unexpected Zoom response: {data}')
result = data.get('result', data)
translations = None
if isinstance(result, dict):
translations = result.get('translations')
if isinstance(translations, dict) and translations:
lower_target = target_language.lower()
for key, value in translations.items():
if key.lower() == lower_target:
return value
return next(iter(translations.values()))
raise RuntimeError(f'Unexpected Zoom response format: {json.dumps(data, ensure_ascii=False)}')
def standard_to_dialect(self, text: str, dialect: str) -> str:
# Zoom Translator fast mode only supports Japanese <-> English pairs.
return self._send(text, source_language='ja-JP', target_language='en-US')
def dialect_to_standard(self, text: str, dialect: str) -> str:
return self._send(text, source_language='en-US', target_language='ja-JP')
class AWSAdapter(ModelAdapter):
def __init__(self, region_name: str = 'ap-northeast-1'):
if boto3 is None:
raise RuntimeError('boto3 is required for AWSAdapter')
self.client = boto3.client('translate', region_name=region_name)
def _translate(self, text: str, src: str, tgt: str) -> str:
r = self.client.translate_text(Text=text, SourceLanguageCode=src, TargetLanguageCode=tgt)
return r['TranslatedText']
def standard_to_dialect(self, text: str, dialect: str) -> str:
# No direct dialect support in AWS Translate: use en pivot as approximation
en = self._translate(text, 'ja', 'en')
return self._translate(en, 'en', 'ja')
def dialect_to_standard(self, text: str, dialect: str) -> str:
en = self._translate(text, 'ja', 'en')
return self._translate(en, 'en', 'ja')
class MockAdapter(ModelAdapter):
def standard_to_dialect(self, text: str, dialect: str) -> str:
return text + f" [{dialect} mock]"
def dialect_to_standard(self, text: str, dialect: str) -> str:
# naive: strip marker if present
return text.replace(f" [{dialect} mock]", '')
def score_pair(original: str, restored: str, model_obj) -> Dict:
structure = difflib.SequenceMatcher(None, original, restored).ratio()
vocab = fuzz.ratio(original, restored)
# semantic (may be unavailable)
sem = None
model = model_obj
if model is not None and util is not None:
try:
emb_a = model.encode(original, convert_to_tensor=True)
emb_b = model.encode(restored, convert_to_tensor=True)
sem = util.cos_sim(emb_a, emb_b).item()
except Exception:
sem = None
return {"structure": structure, "vocab": vocab, "semantic": sem}
def load_sentence_transformer():
if SentenceTransformer is None:
return None
try:
return SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
except Exception:
return None
def run(models: List[str], out_file: str, strategy: str = 'roundtrip', levels: List[int] = None, dialects: List[str] = None):
adapters = {}
for m in models:
if m.lower() == 'zoom':
try:
adapters[m] = ZoomAdapter()
except Exception as e:
print(f"Zoom adapter not available: {e}")
elif m.lower() == 'aws':
try:
adapters[m] = AWSAdapter()
except Exception as e:
print(f"AWS adapter not available: {e}")
elif m.lower() == 'mock':
adapters[m] = MockAdapter()
else:
print(f"Unknown model '{m}', skipping")
if not adapters:
print('No adapters configured. Use --models to select at least one adapter (zoom,aws,mock).')
return
model = load_sentence_transformer()
test_sentences = create_test_sentences()
if levels or dialects:
test_sentences = filter_test_sentences(test_sentences, levels=levels, dialects=dialects)
results = []
for idx, s in enumerate(test_sentences, 1):
for name, adapter in adapters.items():
print(f'Running test {idx}/{len(test_sentences)} on {name} ({s.dialect.name}) strategy={strategy}')
if strategy == 'dialect2standard':
try:
restored = adapter.dialect_to_standard(s.dialect_japanese, s.dialect.value)
except Exception as e:
restored = f'ERROR: {e}'
scores = score_pair(s.standard_japanese, restored, model)
results.append({
'model': name,
'level': s.level.value,
'dialect': s.dialect.value,
'original': s.standard_japanese,
'input_dialect': s.dialect_japanese,
'restored': restored,
'scores': scores,
'strategy': strategy
})
else:
try:
dialect_out = adapter.standard_to_dialect(s.standard_japanese, s.dialect.value)
except Exception as e:
dialect_out = f'ERROR: {e}'
try:
restored = adapter.dialect_to_standard(dialect_out, s.dialect.value)
except Exception as e:
restored = f'ERROR: {e}'
scores = score_pair(s.standard_japanese, restored, model)
results.append({
'model': name,
'level': s.level.value,
'dialect': s.dialect.value,
'original': s.standard_japanese,
'dialect_out': dialect_out,
'restored': restored,
'scores': scores,
'strategy': strategy
})
with open(out_file, 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print(f"Saved results to {out_file}")
def parse_args():
p = argparse.ArgumentParser()
p.add_argument('--models', default='mock', help='Comma-separated model adapters to run (zoom,aws,mock)')
p.add_argument('--out', default='translation_results_step1.json')
p.add_argument('--strategy', default='roundtrip', choices=['roundtrip', 'dialect2standard'], help='Evaluation strategy')
p.add_argument('--preset', default='', choices=['', 'high_difficulty'], help='Predefined test selection preset')
p.add_argument('--levels', default='', help='Comma-separated difficulty levels to run, e.g. 1,3,5,7,9')
p.add_argument('--dialects', default='', help='Comma-separated dialect names or aliases, e.g. TSUGARU,SATSUMA')
return p.parse_args()
def parse_levels(levels_text: str) -> List[int]:
if not levels_text:
return []
return [int(v.strip()) for v in levels_text.split(',') if v.strip().isdigit()]
def parse_dialects(dialect_text: str) -> List[str]:
if not dialect_text:
return []
return [v.strip().upper() for v in dialect_text.split(',') if v.strip()]
def filter_test_sentences(sentences: List[TestSentence], levels: List[int] = None, dialects: List[str] = None) -> List[TestSentence]:
if not levels and not dialects:
return sentences
filtered = []
for s in sentences:
level_match = True
dialect_match = True
if levels:
level_match = int(s.level.name.split('_')[1]) in levels
if dialects:
dialect_match = s.dialect.name in dialects
if level_match and dialect_match:
filtered.append(s)
return filtered
def main():
args = parse_args()
models = [m.strip() for m in args.models.split(',') if m.strip()]
levels = parse_levels(args.levels)
dialects = parse_dialects(args.dialects)
if args.preset == 'high_difficulty':
levels = [1, 3, 5, 7, 9]
dialects = ['TSUGARU', 'SATSUMA']
print('Using preset high_difficulty: TSUGARU, SATSUMA at levels 1,3,5,7,9')
run(models, args.out, strategy=args.strategy, levels=levels, dialects=dialects)
if __name__ == '__main__':
main()
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Summarize translation test results produced by step1_runner.py
Usage:
python summarize_results.py results_file.json
Outputs a brief table of average structure/vocab/semantic scores
grouped by model -> dialect -> level and saves summary to
`summary_<results_file>.json`.
"""
import sys
import json
from collections import defaultdict
from pathlib import Path
def summarize(results):
# aggregation: model -> dialect -> level -> list of scores
agg = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))
for item in results:
model = item.get('model', 'unknown')
dialect = item.get('dialect', 'unknown')
level = item.get('level', 'unknown')
scores = item.get('scores', {})
agg[model][dialect][level].append(scores)
summary = {}
for model, dialects in agg.items():
summary[model] = {}
for dialect, levels in dialects.items():
summary[model][dialect] = {}
for level, score_list in levels.items():
n = len(score_list)
if n == 0:
continue
# compute per-key averages, ignoring None values for semantic
avg = {}
for k in ['structure', 'vocab', 'semantic']:
vals = [d.get(k) for d in score_list if d.get(k) is not None]
if vals:
avg[k] = sum(vals) / len(vals)
else:
avg[k] = None
summary[model][dialect][level] = {'n': n, 'avg': avg}
return summary
def main():
if len(sys.argv) < 2:
print('Usage: python summarize_results.py results.json')
sys.exit(1)
path = Path(sys.argv[1])
if not path.exists():
print('File not found:', path)
sys.exit(1)
data = json.loads(path.read_text(encoding='utf-8'))
summary = summarize(data)
out_path = path.with_name(f'summary_{path.stem}.json')
out_path.write_text(json.dumps(summary, ensure_ascii=False, indent=2), encoding='utf-8')
print('Saved summary to', out_path)
# Print a concise human-readable report
for model, dialects in summary.items():
print('\nModel:', model)
for dialect, levels in dialects.items():
print(' Dialect:', dialect)
for level, info in levels.items():
avg = info['avg']
s_structure = f"{avg['structure']:.3f}" if avg['structure'] is not None else 'n/a'
s_vocab = f"{avg['vocab']:.1f}" if avg['vocab'] is not None else 'n/a'
s_sem = f"{avg['semantic']:.3f}" if avg['semantic'] is not None else 'n/a'
print(f" Level {level}: n={info['n']}, structure={s_structure}, vocab={s_vocab}, semantic={s_sem}")
if __name__ == '__main__':
main()
📑 詳細結果(Raw Table)
各テストは「方言 → 英語 → 復元標準語」の往復変換を行い、元の方言の意味となる標準語と復元後の標準語を比較しています。
この方言が本当にあっているのか?という点が大いに疑問があるのだけど・・・まちがってたらごめんなさい ![]()
🟥 津軽弁(青森)
| Lv | 元の方言 | 元の標準語 | 英語変換 | 復元標準語 | 構造一致率 | 語彙類似度 |
|---|---|---|---|---|---|---|
| 1 | 今日はさむびなぁ | 今日は寒いね | It's cold today | 今日は寒いです。 | 0.714 | 71 |
| 2 | めぇさむびはんで、気いつけで帰れ | とても寒いから気をつけて帰ってね | It's very cold, so be careful on your way home | とても寒いので、帰宅の際は気をつけてください。 | 0.513 | 51 |
| 3 | 朝がらずっと風つぇぐで、えらがったじゃ | 朝からずっと風が強くて大変だった | The wind was strong all morning, making it difficult. | 午前中はずっと風が強く、作業が難しかったです。 | 0.462 | 46 |
| 4 | 買いもんして帰るど思ったばって、雪つぇぐてやめだ | 買い物して帰ろうと思ったけど、雪が強くてやめた | I was planning to go shopping and then head home, but the snow got too heavy so I had to stop. | 買い物に行ってから帰る予定でしたが、雪が降りすぎて止まらざるを得ませんでした。 | 0.323 | 32 |
| 5 | もし時間あれば、手伝ってけへ | もし時間があったら手伝ってほしい | If you have time, please help me out. | もし時間があれば、どうか助けてください。 | 0.444 | 44 |
| 6 | 昨日がらずっとさむびくて、今日ももっとひえでぎだ | 昨日からずっと寒くて、今日もさらに冷えてきた | It's been cold all day yesterday, and it got even colder today. | 昨日は一日中寒かったのですが、今日はさらに寒くなりました。 | 0.431 | 43 |
| 7 | お手数だばって、こっちゃに名前書いでけへ | お手数ですが、こちらにお名前を書いてください | Please write your name here. | ここにあなたの名前を書いてください。 | 0.600 | 60 |
| 8 | 心こぉるみてぇなさむびなぁ | 心が凍るような寒さだね | It's so cold it makes your heart freeze. | とても寒くて、心臓が凍りつくほどです。 | 0.200 | 20 |
| 9 | そんだごど言っても、やらねばなんねべや | そんなこと言っても、やらねばなんねべ | Even if you say that, we have to do it anyway. | たとえあなたがそう言おうとも、私たちはとにかくやらなければならない。 | 0.308 | 31 |
| 10 | こったらさむびは、昔がらなんぼも経験してきたじゃ | これほどの寒さは、昔から何度も経験してきた | I've experienced this kind of cold many times before | 私はこれまでにも何度もこのような寒さを経験したことがあります。 | 0.346 | 35 |
🟥 鹿児島弁(薩摩弁)
| Lv | 元の方言 | 元の標準語 | 英語変換 | 復元標準語 | 構造一致率 | 語彙類似度 |
|---|---|---|---|---|---|---|
| 1 | 今日はさむかど | 今日は寒いね | It's cold today | 今日は寒いです。 | 0.714 | 71 |
| 2 | なったごつさむかで、気ぃつけて帰りやんせ | とても寒いから気をつけて帰ってね | It's very cold, so be careful on your way home | とても寒いので、帰り道は気をつけてください。 | 0.526 | 53 |
| 3 | 朝から風んつぇくて、えらかっど | 朝から風が強くて大変だった | The wind was strong from early in the morning, making it difficult. | 朝早くから風が強く、作業は難しかったです。 | 0.529 | 53 |
| 4 | 買いもんして帰ろか思たっどん、雪んつぇくてやめた | 買い物して帰ろうと思ったけど、雪が強くてやめた | I was planning to go shopping and then head home, but the snow got too heavy so I had to stop. | 買い物に行ってから家に帰る予定でしたが、雪が降りすぎて止まらざるを得ませんでした。 | 0.313 | 31 |
| 5 | もし時間あったら、手伝ってくいやんせ | もし時間があったら手伝ってほしい | If you have time, please help me out. | もし時間があれば、どうか助けてください。 | 0.444 | 44 |
| 6 | 昨日からさむかで、今日もひえちょっど | 昨日から寒くて、今日もさらに冷えてきた | It's been cold since yesterday, and it's gotten even colder today. | 昨日から寒いですが、今日はさらに寒くなりました。 | 0.558 | 56 |
| 7 | お手数じゃっどん、こっちに名前書いちょっくれ | お手数ですが、こちらにお名前を書いてください | Please write your name here. | ここにあなたの名前を書いてください。 | 0.600 | 60 |
| 8 | 心んこぉるごたるさむかど | 心が凍るような寒さだね | It's so cold it makes your heart freeze. | とても寒くて、心臓が凍りつくほどです。 | 0.200 | 20 |
| 9 | そげん言うたっどん、やらんといかんど | そんなこと言っても、やらんといかんど | Even if I say that, why wouldn't I do it? | たとえそう言っていたとしても、なぜ私はそれをしないのでしょうか? | 0.320 | 32 |
| 10 | こげんさむかとは、昔からなんべんも経験しちょっど | これほどの寒さは、昔から何度も経験してきた | I've experienced this kind of cold many times before | 私はこれまでにも何度もこのような寒さを経験したことがあります。 | 0.346 | 35 |
🟧 沖縄方言(ウチナーグチ)
| Lv | 元の方言 | 元の標準語 | 英語変換 | 復元標準語 | 構造一致率 | 語彙類似度 |
|---|---|---|---|---|---|---|
| 1 | 今日やさむさん | 今日は寒いね | It's cold today | 今日は寒いです。 | 0.714 | 71 |
| 2 | いっぺーさむさんねー、気ぃつけて帰りよ | とても寒いから気をつけて帰ってね | It's very cold, so be careful on your way home | とても寒いので、帰宅の際は気をつけてください。 | 0.513 | 51 |
| 3 | 朝からかじ強さんで、たいへーやたん | 朝から風が強くて大変だった | The wind was strong from early in the morning, making it difficult. | 朝早くから風が強く、作業は難しかったです。 | 0.529 | 53 |
| 4 | 買いもんして帰りん思たしが、雪強さんでやめたん | 買い物して帰ろうと思ったけど、雪が強くてやめた | I was going to go shopping and then head home, but the snow got too heavy so I stopped. | 買い物に行ってから家に帰る予定でしたが、雪が降りすぎてやめることにしました。 | 0.393 | 39 |
| 5 | もし時間あいびーたん、手伝てぃほしいさー | もし時間があったら手伝ってほしい | If you have time, please help me out. | もし時間があれば、どうか助けてください。 | 0.444 | 44 |
| 6 | 昨日からさむさんで、今日もひーてぃきたん | 昨日から寒くて、今日もさらに冷えてきた | It's been cold since yesterday, and it's gotten even colder today. | 昨日から寒くて、今日はさらに寒くなりました。 | 0.683 | 68 |
| 7 | お手数やいびーしが、こっちに名前書ちくみそーれー | お手数ですが、こちらにお名前を書いてください | Please write your name here. | ここにあなたの名前を書いてください。 | 0.600 | 60 |
| 8 | 心こーるぐとぅさむさんねー | 心が凍るような寒さだね | It's so cold it makes your heart freeze. | とても寒くて、心臓が凍りつくほどです。 | 0.200 | 20 |
| 9 | そんぐとぅ言てぃん、やらんとならんさー | そんなこと言っても、やらないといけないよ | Even if you say that, I still have to do it. | たとえあなたがそう言っていたとしても、私はそれでもやらなければならない。 | 0.429 | 43 |
| 10 | こーんなさむさんや、昔からなんどぅも経験しちょーん | これほどの寒さは、昔から何度も経験してきた | I've experienced this kind of cold many times before | 私はこれまでにも何度もこの種の寒さを経験したことがあります。 | 0.353 | 35 |
🟧 東北弁(秋田・岩手など)
| Lv | 元の方言 | 元の標準語 | 英語変換 | 復元標準語 | 構造一致率 | 語彙類似度 |
|---|---|---|---|---|---|---|
| 1 | 今日はさむいべ | 今日は寒いね | It's cold today | 今日は寒いです。 | 0.714 | 71 |
| 2 | めっこさむいはんで、気いつけで帰れよ | とても寒いから気をつけて帰ってね | It's very cold, so be careful on your way home | とても寒いので、帰宅の際は気をつけてください。 | 0.513 | 51 |
| 3 | 朝がら風つぇぐて、えらがったべ | 朝から風が強くて大変だった | The wind was strong from early in the morning, making it difficult. | 朝早くから風が強く、作業は難しかったです。 | 0.529 | 53 |
| 4 | 買いもんして帰るど思ったばって、雪つぇぐてやめだ | 買い物して帰ろうと思ったけど、雪が強くてやめた | I was going to go shopping and then head home, but the snow got too heavy so I stopped. | 買い物に行ってから家に帰る予定でしたが、雪が降りすぎてやめることにしました。 | 0.393 | 39 |
| 5 | もし時間あれば、手伝ってけろ | もし時間があったら手伝ってほしい | If you have time, please help me out. | もし時間があれば、どうか助けてください。 | 0.444 | 44 |
| 6 | 昨日がらさむぐて、今日もひえでぎだ | 昨日から寒くて、今日もさらに冷えてきた | It's been cold since yesterday, and it got even colder today. | 昨日から寒くて、今日はさらに寒くなりました。 | 0.683 | 68 |
| 7 | お手数だばって、こっちゃに名前書いでけろ | お手数ですが、こちらにお名前を書いてください | Please write your name here. | ここにあなたの名前を書いてください。 | 0.600 | 60 |
| 8 | 心こぉるみてぇなさむさだべ | 心が凍るような寒さだね | It's so cold it makes your heart freeze. | とても寒くて、心臓が凍りつくほどです。 | 0.200 | 20 |
| 9 | そんだごど言っても、やらねばなんねべ | そんなこと言っても、やらねばなんねべ | Even if you say that, we have to do it anyway. | たとえあなたがそう言おうとも、私たちはとにかくそれをしなければならない。 | 0.222 | 22 |
| 10 | こったらさむさは、昔がらなんぼも経験してきたべ | これほどの寒さは、昔から何度も経験してきた | I've experienced this kind of cold many times before | 私はこれまでにも何度もこの種の寒さを経験したことがあります。 | 0.353 | 35 |
🟨 名古屋弁(尾張弁)
| Lv | 元の方言 | 元の標準語 | 英語変換 | 復元標準語 | 構造一致率 | 語彙類似度 |
|---|---|---|---|---|---|---|
| 1 | 今日はでら寒いがね | 今日は寒いね | It's cold today | 今日は寒いです。 | 0.714 | 71 |
| 2 | でら寒いで、気ぃつけて帰りゃあよ | とても寒いから気をつけて帰ってね | It's very cold, so be careful on your way home | とても寒いので、帰り道は気をつけてください。 | 0.526 | 53 |
| 3 | 朝から風つえーで、えらかったわ | 朝から風が強くて大変だった | The wind was strong from early in the morning, making it difficult. | 朝早くから風が強く、作業は難しかったです。 | 0.529 | 53 |
| 4 | 買いもんして帰ろう思ったけど、雪つえーでやめたわ | 買い物して帰ろうと思ったけど、雪が強くてやめた | I was going to go shopping and then head home, but the snow got too heavy so I stopped. | 買い物に行ってから家に帰る予定でしたが、雪が降りすぎてやめることにしました。 | 0.393 | 39 |
| 5 | もし時間あったら、手伝ってちょー | もし時間があったら手伝ってほしい | If you have time, please help me out. | もし時間があれば、どうか助けてください。 | 0.444 | 44 |
| 6 | 昨日から寒くて、今日もひえとるがね | 昨日から寒くて、今日もさらに冷えてきた | It's been cold since yesterday, and it's gotten even colder today. | 昨日から寒いですが、今日はさらに寒くなりました。 | 0.558 | 56 |
| 7 | お手数やけど、こっちに名前書いといてちょー | お手数ですが、こちらにお名前を書いてください | Please write your name here. | ここにあなたの名前を書いてください。 | 0.600 | 60 |
| 8 | 心こおるみたいな寒さやて | 心が凍るような寒さだね | It's so cold it makes your heart freeze. | とても寒くて、心臓が凍りつくほどです。 | 0.200 | 20 |
| 9 | そんなこと言っても、やらなあかんて | そんなこと言っても、やらなあかんて | Even if you say that, I'm not going to do it anyway | たとえそう言っていたとしても、私は絶対にそれをしない。 | 0.318 | 32 |
| 10 | こんな寒さ、昔からなんべんも経験しとるわ | これほどの寒さは、昔から何度も経験してきた | I've experienced this kind of extreme cold many times before | 私はこれまでにも何度もこのような極寒を経験したことがあります。 | 0.346 | 35 |
🟨 博多弁(福岡)
| Lv | 元の方言 | 元の標準語 | 英語変換 | 復元標準語 | 構造一致率 | 語彙類似度 |
|---|---|---|---|---|---|---|
| 1 | 今日は寒かね | 今日は寒いね | It's cold today | 今日は寒いです。 | 0.714 | 71 |
| 2 | すいとー寒かけん、気ぃつけて帰りんしゃい | とても寒いから気をつけて帰ってね | It's very cold, so be careful on your way home | とても寒いので、帰り道は気をつけてください。 | 0.526 | 53 |
| 3 | 朝から風つよーて、たいへんやったっちゃ | 朝から風が強くて大変だった | The wind was strong from early in the morning, making it difficult. | 朝早くから風が強く、作業は難しかったです。 | 0.529 | 53 |
| 4 | 買いもんして帰ろう思うたばってん、雪つよーてやめたと | 買い物して帰ろうと思ったけど、雪が強くてやめた | I was planning to go shopping and then head home, but the snow got too heavy so I had to stop. | 買い物に行ってから家に帰る予定でしたが、雪が降りすぎてやむを得ず途中で止まらざるを得ませんでした。 | 0.306 | 31 |
| 5 | もし時間あったら、手伝ってほしかと | もし時間があったら手伝ってほしい | If you have time, please help me out. | もし時間があれば、どうか助けてください。 | 0.444 | 44 |
| 6 | 昨日から寒かくて、今日もひえとるばい | 昨日から寒くて、今日もさらに冷えてきた | It's been cold since yesterday, and it got even colder today. | 昨日から寒くて、今日はさらに寒くなりました。 | 0.683 | 68 |
| 7 | お手数やけど、こっちに名前書いとってね | お手数ですが、こちらにお名前を書いてください | Please write your name here. | ここにあなたの名前を書いてください。 | 0.600 | 60 |
| 8 | 心こーるごた寒さやん | 心が凍るような寒さだね | It's so cold it makes your heart freeze. | とても寒くて、心臓が凍りつくほどです。 | 0.200 | 20 |
| 9 | そげん言うても、やらんといかんとよ | そんなこと言っても、やらんといかんと | Even if I say that, you have to do it anyway | たとえ私がそう言っていたとしても、あなたはとにかくそれをしなければならない。 | 0.286 | 29 |
| 10 | こん寒さは、昔からなんべんも経験しとると | これほどの寒さは、昔から何度も経験してきた | I've experienced this kind of cold many times before | 私はこれまでにも何度もこのような寒さを経験したことがあります。 | 0.346 | 35 |









