| import argparse |
| import binascii |
| import glob |
| import openai |
| import os |
| import os.path |
| import numpy as np |
| import matplotlib.pyplot as plt |
| import random |
| import sys |
| import tempfile |
| import time |
| import torch |
| from PIL import Image |
| from IPython.display import Audio |
| from diffusers import StableDiffusionPipeline |
| from diffusers import DiffusionPipeline |
| from transformers import pipeline |
| from transformers import ViTFeatureExtractor, ViTForImageClassification |
| from audiodiffusion import AudioDiffusion |
| import requests |
|
|
| notes = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"] |
|
|
| def fake_gan(): |
| images = [ |
| (random.choice( |
| [ |
| "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=387&q=80", |
| "https://images.unsplash.com/photo-1554151228-14d9def656e4?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=386&q=80", |
| "https://images.unsplash.com/photo-1542909168-82c3e7fdca5c?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8aHVtYW4lMjBmYWNlfGVufDB8fDB8fA%3D%3D&w=1000&q=80", |
| "https://images.unsplash.com/photo-1546456073-92b9f0a8d413?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=387&q=80", |
| "https://images.unsplash.com/photo-1601412436009-d964bd02edbc?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=464&q=80", |
| ] |
| ), f"label {i}" if i != 0 else "label" * 50) |
| for i in range(3) |
| ] |
| return images |
|
|
| def imageClassifier(inputImage): |
| |
| |
| |
| image = inputImage |
|
|
| feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224') |
| model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224') |
|
|
| inputs = feature_extractor(images=image, return_tensors="pt") |
| outputs = model(**inputs) |
| logits = outputs.logits |
| |
| predicted_class_idx = logits.argmax(-1).item() |
| |
| return "Predicted class:", model.config.id2label[predicted_class_idx] |
|
|
| def audioGenerator(inputText): |
| device = "cuda" if torch.cuda.is_available() else "cpu" |
| dtype = torch.float16 if torch.cuda.is_available() else torch.float32 |
| pipe = DiffusionPipeline.from_pretrained("teticio/audio-diffusion-256").to(device) |
| output = pipe() |
| from IPython.display import display |
| display(output.images[0]) |
| display(Audio(output.audios[0], rate=pipe.mel.get_sample_rate())) |
| print("sample rate is ", pipe.mel.get_sample_rate()) |
| |
| sr=int(pipe.mel.get_sample_rate()) |
| audio=Audio(output.audios[0]) |
| |
| return sr, audio |
|
|
| def generate_spectrogram_audio_and_loop(model_id): |
| audio_diffusion = AudioDiffusion(model_id=model_id) |
| image, (sample_rate, |
| audio) = audio_diffusion.generate_spectrogram_and_audio() |
| loop = AudioDiffusion.loop_it(audio, sample_rate) |
| if loop is None: |
| loop = audio |
| return image, (sample_rate, audio), (sample_rate, loop) |
|
|
| def generate_tone(note, octave, duration): |
| sr = 48000 |
| a4_freq, tones_from_a4 = 440, 12 * (octave - 4) + (note - 9) |
| frequency = a4_freq * 2 ** (tones_from_a4 / 12) |
| duration = int(duration) |
| audio = np.linspace(0, duration, duration * sr) |
| audio = (20000 * np.sin(audio * (2 * np.pi * frequency))).astype(np.int16) |
| return sr, audio |
|
|
| def draw(inp, this_model, force_new): |
| device = "cuda" if torch.cuda.is_available() else "cpu" |
| dtype = torch.float16 if torch.cuda.is_available() else torch.float32 |
| drawing = inp |
| if this_model == "stable-diffusion-2": |
| this_model_addr = "stabilityai/stable-diffusion-2" |
| images_dir = 'images2/' |
| elif this_model == "stable-diffusion-2-1": |
| this_model_addr = "stabilityai/stable-diffusion-2-1" |
| images_dir = 'images2-1/' |
| elif this_model == "stable-diffusion-v1-5": |
| this_model_addr = "runwayml/stable-diffusion-v1-5" |
| images_dir = 'images/' |
| else: |
| raise gr.Error("Unknown Model!") |
| mkdir_if_not_exist(images_dir) |
| drawing_filename = images_dir + drawing.replace(' ', '_') + '.png' |
| if os.path.exists(drawing_filename): |
| if force_new: |
| new_drawing_filename = images_dir + drawing.replace(' ', '_') + '.' + str(time.time()) + '.png' |
| os.replace(drawing_filename, new_drawing_filename) |
| else: |
| print("found drawing ", drawing_filename) |
| return Image.open(drawing_filename) |
| print("generating drawing '", drawing, "'", drawing_filename) |
| pipe = StableDiffusionPipeline.from_pretrained(this_model_addr, torch_dtype=dtype) |
| pipe.enable_attention_slicing() |
| pipe = pipe.to(device) |
| image = pipe(drawing).images[0] |
| image.seek(0) |
| image.save(drawing_filename) |
| return image |
|
|
| def write_blog(inp, this_model, min_length, max_length, force_new): |
| blog_post_name = inp |
| if this_model == "gpt-neo-1.3B": |
| this_model_addr = "EleutherAI/gpt-neo-1.3B" |
| text_dir = 'text1.3/' |
| elif this_model == "gpt-neo-2.7B": |
| this_model_addr = "EleutherAI/gpt-neo-2.7B" |
| text_dir = 'text2.7/' |
| else: |
| raise gr.Error("Unknown Model!") |
| mkdir_if_not_exist(text_dir) |
| target_filename = text_dir + blog_post_name.replace(' ', '_') + '.txt' |
| if os.path.exists(target_filename): |
| if force_new: |
| new_target_filename = text_dir + blog_post_name.replace(' ', '_') + '.' + str(time.time()) + '.txt' |
| os.replace(target_filename, new_target_filename) |
| else: |
| print("found drawing ", target_filename) |
| with open(target_filename, 'r') as file: |
| return file.read() |
| print("generating blog '", blog_post_name, "'", target_filename) |
| device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") |
| dtype = torch.float16 if torch.cuda.is_available() else torch.float32 |
| |
| |
| |
| generator = pipeline('text-generation', model=this_model_addr, device=device, torch_dtype=dtype) |
| |
| |
| res = generator(blog_post_name, min_length=min_length, max_length=max_length, do_sample=True, temperature=0.7) |
| blog_post_text = res[0]['generated_text'] |
| with open(target_filename, 'w') as file: |
| file.write(blog_post_text) |
| return blog_post_text |
|
|
| def nameMyPet(inp): |
| animal = inp |
| response = openai.Completion.create( |
| model="text-davinci-003", |
| prompt=generate_prompt(animal), |
| temperature=0.6, |
| ) |
| return response.choices[0].text |
|
|
| def mkdir_if_not_exist(path): |
| if os.path.exists(path): |
| return 0 |
| else: |
| os.mkdir(path) |
|
|
| def generate_prompt(animal): |
| return """Suggest three names for an animal that is a superhero. |
| |
| Animal: Cat |
| Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline |
| Animal: Dog |
| Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot |
| Animal: {} |
| Names:""".format( |
| animal.capitalize() |
| ) |
|
|