2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Zoom AI Servicesは、田舎のばっさ・じっさの味方になれるのか?

2
Last updated at Posted at 2026-07-08

背景

これに参加してみようって話
新しいことやることは大切で、その動機付けにはこういうイベントは最適

長いので先に結論

Zoom AI Services は、多言語翻訳用であって、方言認識はできませんでした :bow:
方言認識をする場合は、LLM を間に噛ませれば、いけるかも。

ただし、Scribe の時点で方言認識ができないと文字起こしもできないと思われる。
読み上げツールなんかで音韻などを方言で行うものが見つけられなかったので、今回はそこの検証も断念。

とりあえず、Zoom AI Services を使ってみる、という目的は達成できたけど
田舎のおばあちゃん・おじいちゃんの味方になれそうか?という点は、Zoom AI Services だけだと厳しそう、というのが現状の結論。

まぁ、今時聞き取りづらい方言を話す人は減っていってるんだけど、
以下を考えると大切な文化だよなぁと思っているので、残していきたい気持ちもある

言語的多様性があることで、以下のような利点がある、認識

  • 文脈の読み取りが上手くなる
  • 相手に合わせた言い換えが得意になる
  • 多角的な思考ができる
  • 問題解決が早くなる

敬語もこういう効果はあると思うけど、それすらもだんだんと合理的になって消えつつあるよね・・

まずは、API 環境を使えるように

ってことで、以下を参考に進めつつ記録

必要なものはメールアドレスとクレジットカードなどの決済手段だけです。無料枠の範囲でご利用いただくだけであれば、支払は発生しません。迷わず進めれば5分ほどで完了します。

クレカ登録要らないってのは、やっぱりハードル下がっていいですよね。 :laughing:

まずは公式でサインアップ

Pack 使う場面
Zoom Build Platform 音声→テキスト、翻訳、要約、バッチ処理
Zoom Developer Pack Zoom会議のリアルタイム音声・映像をAI処理

image.png

通貨を選択します。無料枠がドルだと20ドル、円だと2000円ですので、ドルのほうが無料枠が多くなるのでお勧めです。

ってことなので、

  1. $ に変えて
  2. Zoom Build Platform を選択

image.png

ここ、Yen 表記だと 2000 credits free なのに、 2000 ってなに?って思ったけど、

ここを選択すると、2000 なんて数字は無い。

image.png

両方の 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

image.png

Code を入れて、Continue to address

image.png

Address

Personal Account にして、必須項目を埋めて、 Continue
image.png

Place Order

image.png
で、Place Order

finished

image.png
無事成功

API Key 取得へ

image.png

ここから飛んでいくと、
image.png
API keysCopy 出来そう。

でいよいよ、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 experienceOFF にしましょう

image.png

すると、見慣れた以下のページに戻ってこられます。

image.png

New UI でもきっとあるとは思うんで、なれたらそっちでも

参考

api lists

当初計画

API の機能を確認せずに Title 決めてた。
で、計画を建てたのがこんな感じ

STEP1:複数モデルでテキスト往復変換

目的:
Zoom Translator の方言理解力を、他モデルと比較しながら評価する。

やること:

  1. 標準語の短文を用意
  2. 各モデルで「標準語 → 方言」へ変換
  3. さらに「方言 → 標準語」へ戻す
  4. 以下の指標で精度を比較
    • difflib(構造一致率)
    • fuzzywuzzy(語彙類似度)
    • sentence-transformers(意味類似度)
  5. 精度が良かったら、ニュアンスを人間が評価

判断基準(Zoom が次に進む条件):

  • 構造一致率(difflib) 0.85 以上
  • 語彙類似度(fuzzywuzzy) 85 以上
  • 意味類似度(sentence-transformers) 0.90 以上
    3つのうち 2つ以上が高い場合のみ STEP2 へ進む

STEP2:Zoom Scribe(音声)+ Translator(標準語化)

目的:
Zoom が「方言音声」をどこまで拾えるかを評価する。

やること:

  1. 方言テキストを無料 TTS で読み上げ
  2. Scribe API に音声を投げて文字起こし
  3. その結果を Translator で標準語化
  4. STEP1 と同じ指標で比較
  5. 劣化ポイントを分析

STEP2 の意味:

  • Zoom がテキストで方言を理解できている場合のみ価値がある
  • 音声を入れたときの「劣化度」を測る追加検証

対象

対応方言

難易度 方言 特徴 翻訳難度
🟥 高 津軽弁(青森) 音の省略・訛りが強く、語彙も独特 非常に難しい
🟥 高 鹿児島弁(薩摩弁) 音韻変化が激しく、助詞や語尾が独自 非常に難しい
🟧 中 沖縄方言(ウチナーグチ) 日本語系統だが琉球語に近い 難しい
🟧 中 東北弁(秋田・岩手) 母音の曖昧化、助詞の省略 難しい
🟨 やや中 名古屋弁(尾張弁) 標準語に近いが語尾が特徴的 やや難しい
🟨 やや中 博多弁(福岡) 柔らかい語尾 やや難しい

難易度レベル

  1. LEVEL 1: SVO基本(単純な主語-動詞-目的語)
  2. LEVEL 2: SVO拡張(形容詞や副詞の追加)
  3. LEVEL 3: 述語修飾(複数の修飾語)
  4. LEVEL 4: 複数述語(接続詞による複数の動作)
  5. LEVEL 5: 条件分岐(条件を含む文)
  6. LEVEL 6: 時系列(複数の時間表現)
  7. LEVEL 7: 敬語(敬語の使用)
  8. LEVEL 8: 比喩(比喩や表現の豊かさ)
  9. LEVEL 9: 会話体(日常会話のニュアンス)
  10. LEVEL 10: 文語体(より複雑で文語的な表現)

で、実際にやったこと

Zoom Translator は多言語観の翻訳のみ対応している、って話にようやく気付いたので・・

Step 1 で LLM と比較することすらダメじゃん。誰だよこれ考えたの!って状態

ということで・・

STEP1 の、往復変換評価のみを、Zoom Translator でやってみることにした。
API を使ってみることも大切だ、と気持ちを切り替えて :sweat_smile:

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)のまま。ちょっとやる気が失せたのでした :sweat:


📊 方言別 平均スコア

選択した方言は、理解しにくいといわれるものと、知られてそうなものを選んだ

方言 平均 構造一致率 平均 語彙類似度
津軽弁(青森) 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 が、方言を吸収してくれる可能性も・・ :thinking:

いや、そんなわけないか、方言認識したとしても、それを文字お越しするだけだよね。


📈 レベル別 傾向

単に方言だけじゃなってことで、難易度として、10段階ぐらい用意したんだけど、
想定難易度通りの認識順にはならなかった :thinking:

レベル 構造一致率の傾向 語彙類似度の傾向
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 の特性

  1. 方言を直接扱えない: Zoom Translator は日本語↔英語の翻訳のみ対応。方言→標準語の直接変換はできない。当たり前です!
  2. 敬語化される傾向: 復元時により丁寧な表現(「〜です」「〜ください」)になりやすく、カジュアルな文で差が出る。
  3. 比喩の苦手さ: 「心が凍るような寒さ」が「心臓が凍りつくほど」に直訳気味になり、元の詩的表現が失われる。まぁ、英語にすることで落ちれるんだと思われ。

判断基準との比較

指標 基準 実測(全体平均) 判定
構造一致率 0.85 以上 0.480
語彙類似度 85 以上 47.4
意味類似度 0.90 以上 n/a ⚠️ 未取得

まぁ、なんだ・・・やろうとした自分が問題だっただけ、という落ちでした。
すみません :bow:


あとがき

Zoom AI Services を使ってなんか面白いことできないかなぁと
通勤電車内で Copilot と壁打ちしてるなかで、

  • 田舎のおばあちゃんとかの会話って聞き取れない!

っていう課題を思い出して、

  • これを Zoom AI Services で解決出来るなら面白いんじゃない?

ってなったのでした。

Zoom_Japan さん、是非、田舎のおじいさんおばあさんと、孫たちの意思疎通と豊かな言語体系の維持のためにも、方言理解APIよろしくお願いいたします。 :bow:
って、思ったけど、それだけの需要もないから厳しいよね・・

まぁ、LLM を一枚嚙ませればいけそうなので、そういうサービスを提供すればいいだけなのかもしれない。


検証に利用したコード

GLM5.2 で生成したので、共有するほどではないですが、参加ルールに従って置いておきます。

.env
ZOOM_API_URL = "https://api.zoom.us//v2/aiservices/translator/translate"
ZOOM_API_KEY = "***"
ZOOM_API_SECRET = "***"
step1_runner.py
#!/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()
summarize_results.py
#!/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)

各テストは「方言 → 英語 → 復元標準語」の往復変換を行い、元の方言の意味となる標準語と復元後の標準語を比較しています。

この方言が本当にあっているのか?という点が大いに疑問があるのだけど・・・まちがってたらごめんなさい :bow:

🟥 津軽弁(青森)

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?