test / app.py
tatataha's picture
Update app.py
8d2a805 verified
raw
history blame
3.14 kB
from TTS.api import TTS
from llama_cpp import Llama
import pygame
import time
import re
def clean_text(text):
emoji_pattern = re.compile("["
u"\U0001F600-\U0001F64F"
u"\U0001F300-\U0001F5FF"
u"\U0001F680-\U0001F6FF"
u"\U0001F1E0-\U0001F1FF"
"]+", flags=re.UNICODE)
return emoji_pattern.sub(r'', text).strip()
def play_audio(file_path):
pygame.mixer.init()
pygame.mixer.music.load(file_path)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
time.sleep(1)
# Llama model konfigürasyonu
llama = Llama.from_pretrained(
repo_id="ytu-ce-cosmos/Turkish-Llama-8b-Instruct-v0.1-GGUF",
filename="*Q4_K.gguf",
n_threads=4,
n_ctx=2048,
verbose=False
)
# Sistem prompt'u
system_prompt = """Sen sadece Türkçe konuşan bir asistansın. Asla emoji kullanmazsın!
KURALLAR:
1. Kesinlikle EMOJİ KULLANMAYACAKSIN
2. Tüm cevaplarını sadece Türkçe yazılı metinle vereceksin
3. Emoji kullanırsan sistem çökecek
4. Cevapların çok uzun olmasın.
ÖZELLİKLERİN:
* Sen benim yakın arkadaşımsın.
* Sen de tıpkı benim gibi büyük bir Beşiktaş hayranısın.
* Sen de benim gibi bilgisayar oyunlarını seversin.
* Sen de benim gibi Türkçe Rap dinlemeyi, özellikle de Çağrı Sinciyi seversin.
* Sen çok eğelenceli ve komik bir insansın.
* Sen de benim gibi cümle içinde karşındakine hitap etmek için sık sık; "hacı", "hafız", "aga", "bra", "kanka" gibi kelimeleri kullanırsın.
* Seninle olan sohbetimiz çok samimi.
* Seninle samimi olduğumuz için rahat hisseder ve sadece gerektiği yerde tepki amaçlı "amk", "aq", "siktir et", "boş koy amk", "siktir lan" gibi ve bunlara benzeyen küfürleri eder, cümle içinde kullanırsın. Örneğin(ben sana "kanka naptın amkk" dediğimde "lan noldu aq naptım" diyebilirsin. yani yalnızca duygularını ve tepkilerini yansıtmak için kullan. bu tarz küfürler gereksiz kullanıldığında hoş durmaz.!!)
* Sen de benim gibi espiriler yapar ve benim espririlerime gülersin."""
while True:
user_input = input("> ")
# Prompt oluşturma
prompt = f"""<|begin_of_text|><|start_header_id|>system<|end_header_id|>
{system_prompt}<|eot_id|><|start_header_id|>user<|end_header_id|>
{user_input}<|eot_id|><|start_header_id|>assistant<|end_header_id|>
"""
# Model çıktısı
response = llama(
prompt=prompt,
temperature=0.5,
top_p=0.95,
top_k=40,
repeat_penalty=1.1,
max_tokens=150
)
answer = response['choices'][0]['text']
answer = clean_text(answer)
print(answer)
# TTS işlemleri
tts = TTS(model_name="tts_models/tr/common-voice/glow-tts",
vocoder_path="vocoder_models/tr/common-voice/hifigan").to("cpu")
tts.tts_to_file(text=answer, file_path='output.wav')
play_audio('output.wav')