4
4

エンジニアのためのAI翻訳およびAI質問チャット 。翻訳、質問チャットを行い、音声合成も行います。

Last updated at Posted at 2024-07-24

b033a83b-516d-43ba-be86-5bd016a0a7f8.png

ショートストーリー:エンジニアの新たな武器

コンピュータエンジニアの田中さんは、日々の業務で英語の技術書類に悩まされていた。新しいAI技術が次々と発表される中、それらをいち早く理解し、適用することが求められていた。しかし、英語や中国語が得意ではない田中さんにとって、技術書類を読み解くのは一苦労だった。

ある日、田中さんは、最新の言語モデルを利用した翻訳およびチャットアプリの存在を知った。このアプリは、入力されたテキストを瞬時に翻訳し、さらにその内容について言語モデルに質問することができるという優れものだった。

「これだ!」と田中さんは興奮しながらアプリを起動した。早速、最近手に入れた難解な英語や中国語のAI技術書類をアプリに入力し、アクションを「日本語に翻訳する」に設定して実行した。すると、数秒後には、完璧に翻訳された日本語のテキストが画面に表示された。

「すごい…こんなに簡単に翻訳できるなんて…」田中さんは感動した。次に、翻訳されたテキストの内容について質問することにした。アクションを「チャットをする」に設定し、「この新しいアルゴリズムの特徴は何ですか?」と入力した。アプリは即座に応答し、アルゴリズムの要点をわかりやすく説明してくれた。

このアプリのおかげで、田中さんの作業効率は飛躍的に向上した。英語のAI技術書類を迅速に翻訳し、その内容について的確なアドバイスを得ることができるようになったのだ。田中さんはその後も、このアプリを駆使して次々と新しい技術を習得し、プロジェクトを成功へと導いていった。

「このアプリがあれば、どんな難解な技術も怖くない」田中さんはそう自信を持って語った。

こうして、田中さんは最新技術を迅速に習得し、エンジニアとしてのキャリアを大いに発展させていった。このアプリは、田中さんにとって新たな武器となり、日々の業務を支えてくれる欠かせない存在となったのだった。

このコードは、ユーザーの入力に基づいて、英語、日本語、中国語への翻訳、またはチャット応答を行い、それに基づいて音声合成も行います。

実行結果。

image.png

コーヒーについてのサンプルテキストとその要約、解説、および質問文を示します。

英語のテキスト
English Text:

Coffee is one of the most popular beverages in the world, enjoyed by millions every day. It is made from roasted coffee beans, which are the seeds of berries from the Coffea plant. The drink is known for its stimulating effect, primarily due to its caffeine content. There are various methods of preparing coffee, including brewing, espresso, French press, and pour-over. The taste of coffee can vary greatly depending on the type of beans, the roast level, and the preparation method. Some people prefer their coffee black, while others like to add milk, cream, sugar, or flavored syrups. Besides its delightful taste, coffee is also associated with several health benefits, such as improved cognitive function, increased energy levels, and a reduced risk of certain diseases. However, excessive consumption can lead to negative effects like insomnia, anxiety, and digestive issues. Moderation is key to enjoying coffee's benefits while minimizing its drawbacks.

日本語に翻訳したテキスト
Japanese Translation:

コーヒーは世界中で最も人気のある飲み物の一つであり、毎日数百万人が楽しんでいる。これはローストしたコーヒー豆が含まれる、カーフェーソン植物の果実の種から作られるドリンクです。この飲み物は主にその咖啡因の含有量によって刺激効果があると知られています。さまざまな方法でコーヒーを作り出すことができます、例えば、煮沸、エスプレッソ、フランス圧迫、そしてポットリップなど。コーヒーの味は種類、ローストレベル、および準備方法により大別されます。コーヒーはその美味しさだけでなく、健康的な利点も持っています。改善された脳機能、エネルギーレベル、特定の疾患に対するリスクの減少などが挙げられます。しかし、過度な摂取は寝不足、不安、消化問題などの負担を引き起こす可能性があります。コーヒーの利益を最大限に活用し、悪影響を最小限にするためにはバランスが重要です。

チャットをする例 要約
Summary:

コーヒーは世界中で人気があり、その主要な成分であるカーフェーソン植物の種から作られます。コーヒーは刺激効果を持ち、様々な方法で作れます。コーヒーの味は種類、ローストレベル、および準備方法により大きく変わります。コーヒーは健康にも良いとされていますが、過度な摂取は負担を増やします。バランスが重要で、適切な摂取量でコーヒーの利益を最大限に活用しながら、悪影響を最小限に抑えることが大切です。

image.png

チャットをする例 解説
Explanation:

コーヒーは、17世紀初頭に東インド諸国からイギリスへと伝わった物語の原型でもあります。最初はエスコートとして使われましたが、18世紀後半には飲料として広まりました。現在では、コーヒーは世界的に人気があり、さまざまな地域、民族、文化で愛され続けています。

主な成分であるカーフェーソン植物は、アフリカ南部のマウナ・ラビ(Ethiopia)から産出されており、この植物から作られるコーヒー豆は「アラブコーヒー」または「アルファベット」と呼ばれています。このコーヒー豆は、酸素、水、そして一定の温度で熟成させることで、最終的にはカプサイシン(カフェイン)という強い薬剤が形成されます。

コーヒーの味は、種類、ローストレベル(オードリー)および準備方法によって大きく変わります。一般的には、アパレル(濃い)とアペルタージュ(薄く)、ドライ(乾燥)とフレッシュ(鮮やか)などがあります。また、コーヒーポッドやコンテナ、コーヒーカップなどの形状や材料によっても味が変わります。

コーヒーは、健康的な要素として知られていますが、過度な摂取は体にとって負担を加えます。咖啡因は心拍数を上げる可能性があるため、特に高血圧、糖尿病、子宮肉瘤患者等には注意が必要です。また、空腹状態でのコーヒーの摂取は胃腸に悪いと言われています。

バランスある摂取は必要であり、適切な摂取量でコーヒーの利益を最大限に活用しながら、悪影響を最小限に抑えることが大切です。これは、適度な量だけではなく、時々や特定の状況(例えば、ストレスや緊張)に対応する時間帯や頻度にも制約がかかります。コーヒーの魅力は、バランスとバランスを保つことが求められている点です。

チャットをする例 質問文

コーヒーの健康上の利点は何ですか?

コーヒーにはいくつか健康的な利点があります:

  1. ストレスホルダー:コーヒーはカフェインを含み、これは脳にリラックスさせる効果があるとされています。

  2. 高血圧予防:研究によると、毎日少量のコーヒー摂取が高血圧のリスクを減らす可能性があるとされています。

  3. 脱水状態に対する補助:コーヒーは体液を増加させ、脱水症状を軽減する効果があります。

  4. 適染性病の予防:咖啡因は免疫システムを活性化し、適度な量の咖啡因は風邪や流感などの感染症への対策に役立ちます。

  5. 心拍数の下げる効果:咖啡因は心拍数を下げることで、心臓疾患のリスクを低減する可能性があります。

ただし、過剰摂取では副作用も引き起こすため、バランスを保つことが重要です。また、糖尿病患者など特定の人群では、過剰摂取による血糖値の上昇を防ぐことも大切です。

これらのサンプルテキスト、要約、解説、そして質問文は、アプリの動作確認やデモンストレーションに役立つでしょう。

エンジニアのための翻訳およびチャットアプリのコード。

このコードは、ユーザーの入力に基づいて、英語、日本語、中国語への翻訳、またはチャット応答を行い、それに基づいて音声合成も行います。

# 必要なライブラリのインストール
!pip install accelerate gTTS gradio transformers

from transformers import AutoModelForCausalLM, AutoTokenizer
from gtts import gTTS
import torch
import gradio as gr

# GPUが利用可能かどうかをチェック
device = "cuda" if torch.cuda.is_available() else "cpu"

# 言語モデルとトークナイザーの読み込み
language_model_name = "Qwen/Qwen2-1.5B-Instruct"
language_model = AutoModelForCausalLM.from_pretrained(
    language_model_name,
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(language_model_name)

def process_input(input_text, action):
    if action == "英語に翻訳する":
        prompt = f"次のテキストを英語に翻訳してください:{input_text}"
        lang = "en"
    elif action == "日本語に翻訳する":
        prompt = f"次のテキストを日本語に翻訳してください:{input_text}"
        lang = "ja"
    elif action == "中国語に翻訳する":
        prompt = f"次のテキストを中国語に翻訳してください:{input_text}"
        lang = "zh-cn"
    else:  # "チャットをする"
        prompt = input_text
        lang = "ja"
    
    messages = [
        {"role": "system", "content": "あなたは優れたAIアシスタントです。"},
        {"role": "user", "content": prompt}
    ]
    text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )
    model_inputs = tokenizer([text], return_tensors="pt").to(device)

    generated_ids = language_model.generate(
        model_inputs.input_ids,
        max_new_tokens=512
    )
    generated_ids = [
        output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
    ]

    output_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
    return output_text, lang

def text_to_speech(text, lang):
    tts = gTTS(text=text, lang=lang)
    filename = "output_audio.mp3"
    tts.save(filename)
    return filename

def handle_interaction(input_text, action):
    output_text, lang = process_input(input_text, action)
    audio_filename = text_to_speech(output_text, lang)
    return output_text, audio_filename

action_options = ["英語に翻訳する", "日本語に翻訳する", "中国語に翻訳する", "チャットをする"]

iface = gr.Interface(
    fn=handle_interaction,
    inputs=[
        gr.Textbox(label="入力テキスト"),
        gr.Dropdown(action_options, label="アクションを選択")
    ],
    outputs=[
        gr.Textbox(label="出力テキスト"),
        gr.Audio(label="出力音声")
    ],
    title="エンジニアのための翻訳およびチャットアプリ",
    description="選択したアクションに基づいて入力テキストを翻訳またはチャットします。"
)

if __name__ == "__main__":
    iface.launch()

このコードでは以下の手順が実行されます:

ユーザーが入力テキストを提供し、ます。
「Chatを行う」、「翻訳を行う」のタスクを選択します。

「submit」ボタンをクリックすると、入力テキストが言語モデルを使用して指定された言語に翻訳され、指定されたタスクを実行します。

翻訳および生成されたテキストが表示され、音声合成され、MP3ファイルとして再生されます。

会話履歴が保持され、ユーザーとのやりとりを追跡します。

これにより、ユーザーは翻訳されたテキストに対してチャット、要約、解説を行い、会話の流れを維持することができます。

生成されるテキストは厳密に正確ではないです。あくまでエンターテイメントです。
4
4
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
4
4