diff --git a/Email Read Allowed.ipynb b/Email Read Allowed.ipynb new file mode 100644 index 0000000..f655fad --- /dev/null +++ b/Email Read Allowed.ipynb @@ -0,0 +1,137 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "1875b60b-7d4c-4e3a-9751-c9432c395590", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Some weights of the model checkpoint at EleutherAI/gpt-j-6B were not used when initializing GPTJForCausalLM: ['transformer.h.0.attn.bias', 'transformer.h.0.attn.masked_bias', 'transformer.h.1.attn.bias', 'transformer.h.1.attn.masked_bias', 'transformer.h.10.attn.bias', 'transformer.h.10.attn.masked_bias', 'transformer.h.11.attn.bias', 'transformer.h.11.attn.masked_bias', 'transformer.h.12.attn.bias', 'transformer.h.12.attn.masked_bias', 'transformer.h.13.attn.bias', 'transformer.h.13.attn.masked_bias', 'transformer.h.14.attn.bias', 'transformer.h.14.attn.masked_bias', 'transformer.h.15.attn.bias', 'transformer.h.15.attn.masked_bias', 'transformer.h.16.attn.bias', 'transformer.h.16.attn.masked_bias', 'transformer.h.17.attn.bias', 'transformer.h.17.attn.masked_bias', 'transformer.h.18.attn.bias', 'transformer.h.18.attn.masked_bias', 'transformer.h.19.attn.bias', 'transformer.h.19.attn.masked_bias', 'transformer.h.2.attn.bias', 'transformer.h.2.attn.masked_bias', 'transformer.h.20.attn.bias', 'transformer.h.20.attn.masked_bias', 'transformer.h.21.attn.bias', 'transformer.h.21.attn.masked_bias', 'transformer.h.22.attn.bias', 'transformer.h.22.attn.masked_bias', 'transformer.h.23.attn.bias', 'transformer.h.23.attn.masked_bias', 'transformer.h.24.attn.bias', 'transformer.h.24.attn.masked_bias', 'transformer.h.25.attn.bias', 'transformer.h.25.attn.masked_bias', 'transformer.h.26.attn.bias', 'transformer.h.26.attn.masked_bias', 'transformer.h.27.attn.bias', 'transformer.h.27.attn.masked_bias', 'transformer.h.3.attn.bias', 'transformer.h.3.attn.masked_bias', 'transformer.h.4.attn.bias', 'transformer.h.4.attn.masked_bias', 'transformer.h.5.attn.bias', 'transformer.h.5.attn.masked_bias', 'transformer.h.6.attn.bias', 'transformer.h.6.attn.masked_bias', 'transformer.h.7.attn.bias', 'transformer.h.7.attn.masked_bias', 'transformer.h.8.attn.bias', 'transformer.h.8.attn.masked_bias', 'transformer.h.9.attn.bias', 'transformer.h.9.attn.masked_bias']\n", + "- This IS expected if you are initializing GPTJForCausalLM from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n", + "- This IS NOT expected if you are initializing GPTJForCausalLM from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter the professor's name: Asadpour\n", + "Enter your research topic: AI\n", + "Enter your name: Masih\n" + ] + } + ], + "source": [ + "from transformers import AutoModelForCausalLM, AutoTokenizer\n", + "from gtts import gTTS\n", + "from playsound import playsound\n", + "import os\n", + "\n", + "# Load the tokenizer and model for GPT-J\n", + "tokenizer = AutoTokenizer.from_pretrained(\"EleutherAI/gpt-j-6B\")\n", + "model = AutoModelForCausalLM.from_pretrained(\"EleutherAI/gpt-j-6B\")\n", + "\n", + "# Set the padding token to the EOS token\n", + "tokenizer.pad_token = tokenizer.eos_token\n", + "\n", + "def generate_email(professor_name, research_topic, user_name):\n", + " # Email template\n", + " prompt = f\"\"\"\n", + " Dear Professor {professor_name},\n", + "\n", + " I am writing to express my interest in pursuing research under your guidance. My research topic revolves around {research_topic}.\n", + "\n", + " I believe that your work in this area is groundbreaking, and I am eager to contribute to your ongoing projects.\n", + "\n", + " Best regards,\n", + " {user_name}\n", + " \"\"\"\n", + " # Tokenize input\n", + " inputs = tokenizer(prompt, return_tensors=\"pt\", truncation=True, padding=True)\n", + " # Generate email with controlled randomness\n", + " output = model.generate(\n", + " inputs[\"input_ids\"],\n", + " attention_mask=inputs[\"attention_mask\"],\n", + " max_length=len(inputs[\"input_ids\"][0]) + 100,\n", + " do_sample=True, # Set to True to use temperature and top_p\n", + " temperature=0.7,\n", + " top_p=0.9,\n", + " pad_token_id=tokenizer.eos_token_id\n", + " )\n", + " # Decode and return the text\n", + " generated_email = tokenizer.decode(output[0], skip_special_tokens=True)\n", + " return generated_email.strip()\n", + "\n", + "def text_to_speech(text, output_file=\"email.mp3\", lang='en'):\n", + " try:\n", + " if os.path.exists(output_file):\n", + " os.remove(output_file)\n", + " tts = gTTS(text, lang=lang)\n", + " tts.save(output_file)\n", + " print(f\"Speech saved to {output_file}\")\n", + " except Exception as e:\n", + " print(f\"Error generating speech: {e}\")\n", + "\n", + "def play_sound(file_path):\n", + " if not os.path.exists(file_path):\n", + " print(\"File not found.\")\n", + " return\n", + " try:\n", + " # Using playsound\n", + " playsound(file_path)\n", + " print(\"\\nEmail is being read aloud.\")\n", + " except Exception as e:\n", + " print(f\"Error playing sound with playsound: {e}\")\n", + "\n", + "# Input data\n", + "professor_name = input(\"Enter the professor's name: \")\n", + "research_topic = input(\"Enter your research topic: \")\n", + "user_name = input(\"Enter your name: \")\n", + "\n", + "# Generate and print the email\n", + "email = generate_email(professor_name, research_topic, user_name)\n", + "print(\"\\nGenerated Email:\\n\")\n", + "print(email)\n", + "\n", + "# Convert the email to speech\n", + "text_to_speech(email)\n", + "\n", + "# Play the generated speech\n", + "play_sound(\"email.mp3\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89bc527f-4f37-44d3-8454-52a980cf6038", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}