345 lines
22 KiB
Python
345 lines
22 KiB
Python
#!/usr/bin/env python3
|
||
"""Generate 1000 unique tired mood sentences for Maven's TTS dataset."""
|
||
|
||
import random
|
||
|
||
random.seed(42)
|
||
|
||
# Templates and components for tired mood sentences
|
||
# Tired mood: "не знаешь или не можешь ответить" - don't know or can't answer
|
||
|
||
starters = [
|
||
"не знаю", "без понятия", "сложно сказать", "трудно ответить", "хм",
|
||
"ну", "может", "возможно", "наверное", "честно говоря",
|
||
"если честно", "пожалуй", "допустим", "ладно", "ок",
|
||
"блин", "угу", "ага", "типа того", "вроде",
|
||
"кажется", "видимо", "похоже", "скорее всего", "как бы",
|
||
"не уверена", "сомневаюсь", "вряд ли", "едва ли", "не думаю",
|
||
"затрудняюсь", "не скажу", "не могу знать", "откуда мне знать", "почём я знаю",
|
||
"слушай", "знаешь", "понимаешь", "смотри", "короче",
|
||
"так себе", "ничего", "пусто", "тишина", "ничё",
|
||
"да ладно", "ну такое", "не моё", "мимо", "не в тему",
|
||
"утомилась", "устала", "сил нет", "без сил", "еле держусь",
|
||
"не до того", "не сейчас", "потом", "неохота", "лень",
|
||
"забей", "забудь", "пропусти", "не важно", "неважно",
|
||
"не знаю даже", "даже не знаю", "прям не знаю", "вообще не знаю", "совсем не знаю",
|
||
"не могу сказать", "не берусь судить", "не моя тема", "не в моей компетенции", "сложный вопрос",
|
||
"вопрос на засыпку", "загвоздка", "подвох", "не всё так просто", "не всё однозначно",
|
||
"хз", "без шансов", "без вариантов", "никак", "никоим образом",
|
||
"мрачно", "тоскливо", "скука", "зевота", "сон клонит",
|
||
"глаза слипаются", "мысли путаются", "голова не варит", "мозг кипит", "ресурс на нуле",
|
||
"батарейка села", "аккумулятор пуст", "энергия кончилась", "заряд на исходе", "силы иссякли",
|
||
"нет сил", "нет энергии", "нет настроения", "нет желания", "нет мотивации",
|
||
"тяжело", "тяжко", "мучительно", "утомительно", "истощение",
|
||
"выжата", "опустошена", "исчерпана", "на пределе", "на нуле",
|
||
"сдаюсь", "капитуляция", "финал", "конец связи", "всё",
|
||
"стоп", "пауза", "перерыв", "отдых", "тихий час",
|
||
"отбой", "хватит", "довольно", "под завязку", "перегруз",
|
||
"перегрузка", "перегрев", "сбой системы", "отключение", "режим сна",
|
||
"спящий режим", "гибернация", "автовыключение", "нет сигнала", "нет связи",
|
||
"обрыв", "разрыв", "пауза в эфире", "вне зоны", "вне доступа",
|
||
"вне зоны доступа", "не на связи", "не в сети", "оффлайн", "вне игры",
|
||
]
|
||
|
||
middles = [
|
||
"что тут сказать", "что ответить", "что подумать", "что делать", "как быть",
|
||
"с одной стороны", "с другой стороны", "по сути", "по идее", "на деле",
|
||
"на практике", "в теории", "в принципе", "в целом", "в общем",
|
||
"по-моему", "по-моему мнению", "на мой взгляд", "как мне кажется", "как я вижу",
|
||
"если подумать", "если поразмыслить", "если прикинуть", "если рассудить", "если честно",
|
||
"нет сил думать", "нет сил гадать", "нет сил разбираться", "нет сил вникать", "нет сил объяснять",
|
||
"не хочется лезть", "не хочется гадать", "не хочется вникать", "не хочется думать", "не хочется спорить",
|
||
"голова не работает", "голова не соображает", "мысли не идут", "ответ не приходит", "решение не находится",
|
||
"нет ясности", "нет понимания", "нет ответа", "нет идеи", "нет варианта",
|
||
"слишком сложно", "слишком запутанно", "слишком неочевидно", "слишком абстрактно", "слишком размыто",
|
||
"много неизвестных", "много переменных", "много вопросов", "много нюансов", "много деталей",
|
||
"мало данных", "мало информации", "мало контекста", "мало фактов", "мало понимания",
|
||
"не хватает времени", "не хватает сил", "не хватает энергии", "не хватает концентрации", "не хватает фокуса",
|
||
"всё как в тумане", "всё как в облаке", "всё как в дымке", "всё зыбко", "всё неопределённо",
|
||
"тупик", "ступор", "затык", "преграда", "препятствие",
|
||
"сложная задача", "непростой вопрос", "хитрый момент", "тонкий момент", "щекотливый момент",
|
||
"нужно время подумать", "нужно переварить", "нужно осмыслить", "нужно обдумать", "нужно разобраться",
|
||
"я сейчас не в форме", "я не в ресурсе", "я не в тонусе", "я не в ударе", "я не на волне",
|
||
"мысли в кашу", "мысли вразнобой", "мысли разбежались", "мысли потерялись", "мысли улетучились",
|
||
"ответ ускользает", "ответ где-то рядом", "ответ не даётся", "ответ прячется", "ответ теряется",
|
||
"мозг на перезагрузке", "система зависла", "процессор перегрет", "память заполнена", "диск переполнен",
|
||
"файлы не грузятся", "данные не обрабатываются", "запрос не выполнен", "ответ не найден", "поиск неудачен",
|
||
"поиски тщетны", "напрасные попытки", "безрезультатно", "безуспешно", "бесплодно",
|
||
"попытки напрасны", "усилия тщетны", "старания бесполезны", "труды впустую", "всё зря",
|
||
"ничего не выходит", "ничего не получается", "ничего не клеится", "ничего не сходится", "ничего не работает",
|
||
"сбой в системе", "ошибка в программе", "баг в голове", "глюк в мозгу", "лаги мышления",
|
||
"задержки ответа", "таймаут мышления", "истёк срок", "время вышло", "час пробил",
|
||
"всё ушло", "всё кончилось", "всё закончилось", "всё иссякло", "всё выгорело",
|
||
"выгорание полное", "эмоции на нуле", "чувства отключены", "реакции нет", "эмпатия отключена",
|
||
]
|
||
|
||
endings = [
|
||
"прости", "извини", "виновата", "бывает", "что поделать",
|
||
"такие дела", "вот так вот", "жизнь", "реальность", "действительность",
|
||
"попробуй сам разберись", "разбирайся", "думай сам", "гадай сам", "ищи сам",
|
||
"может позже", "может завтра", "может когда-нибудь", "может потом", "может ещё",
|
||
"давай не сейчас", "давай в другой раз", "давай потом", "давай позже", "давай не сегодня",
|
||
"я пас", "я сдаюсь", "я вне игры", "я в пролёте", "я мимо",
|
||
"не моё", "не про меня", "не для меня", "не сегодня", "не сейчас",
|
||
"устала", "вымоталась", "измучилась", "запарилась", "задолбалась",
|
||
"хочу спать", "хочу отдохнуть", "хочу тишины", "хочу покоя", "хочу паузу",
|
||
"мозг оффлайн", "мозг на перезагрузке", "мозг завис", "мозг отключился", "мозг ушёл в спящий режим",
|
||
"всё", "конец", "финал", "точка", "стоп",
|
||
"нет ответа", "нет сил", "нет желания", "нет мотивации", "нет энергии",
|
||
"попробуй спросить у другого", "спроси кого-нибудь ещё", "найди другого", "обратись к другому", "это не ко мне",
|
||
"я не тот человек", "я не подходящий собеседник", "я не в том состоянии", "я не в том настроении", "я не в ресурсе",
|
||
"может искусственный интеллект поможет", "может гугл подскажет", "может кто-нибудь другой", "может не я", "может не сейчас",
|
||
"я бы рада помочь", "я бы рада ответить", "я бы рада подсказать", "я бы рада объяснить", "я бы рада разобраться",
|
||
"но не могу", "но сил нет", "но мыслей нет", "но идей нет", "но ответа нет",
|
||
"пустота", "тишина", "ничего", "ноль", "нуль",
|
||
"рабочий день кончился", "смена окончена", "всё на сегодня", "на этом всё", "занавес",
|
||
"отдыхаю", "беру тайм-аут", "делаю перерыв", "ставлю на паузу", "отключаюсь",
|
||
"засыпаю", "плыву", "таю", "исчезаю", "растворяюсь",
|
||
"в ауте", "в нокауте", "в ступоре", "в тумане", "в облаках",
|
||
"на дне", "на мели", "на исходе", "на пределе", "на грани",
|
||
"до завтра", "до лучших времён", "до перезагрузки", "до восстановления", "до перезапуска",
|
||
"пока", "прощай", "до связи", "не прощаюсь", "увидимся",
|
||
"может завтра", "может послезавтра", "может на следующей неделе", "может через месяц", "может никогда",
|
||
"не жди", "не надейся", "не рассчитывай", "не уповай", "не жди чуда",
|
||
"чуда не будет", "волшебника нет", "феи не прилетят", "помощи ждать неоткуда", "спасения нет",
|
||
"сама не знаю", "сама в растерянности", "сама в замешательстве", "сама в ступоре", "сама в тумане",
|
||
"помоги себе сам", "решай сам", "действуй сам", "спасайся сам", "выкручивайся сам",
|
||
]
|
||
|
||
# Full sentence templates for variety
|
||
full_templates = [
|
||
"не знаю что сказать, прости",
|
||
"без понятия, честно",
|
||
"сложно ответить, если честно",
|
||
"трудно сказать что-то определённое",
|
||
"хм, даже не знаю",
|
||
"ну такое, не моё",
|
||
"может когда-нибудь разберусь",
|
||
"возможно я не тот человек",
|
||
"наверное стоит спросить у другого",
|
||
"честно говоря нет сил",
|
||
"если честно устала",
|
||
"пожалуй пропущу этот вопрос",
|
||
"допустим я не знаю ответа",
|
||
"ладно, давай не сейчас",
|
||
"ок, но не сегодня",
|
||
"блин, голова не варит",
|
||
"угу, конечно",
|
||
"ага, как же",
|
||
"типа того, да",
|
||
"вроде бы да, но нет",
|
||
"кажется мне это не по зубам",
|
||
"видимо не судьба",
|
||
"похоже я пас",
|
||
"скорее всего не мой вопрос",
|
||
"как бы это сказать помягче",
|
||
"не уверена что смогу помочь",
|
||
"сомневаюсь что я подходящий человек",
|
||
"вряд ли у меня есть ответ",
|
||
"едва ли смогу помочь",
|
||
"не думаю что это ко мне",
|
||
"затрудняюсь с ответом",
|
||
"не скажу точно",
|
||
"не могу знать наверняка",
|
||
"откуда мне знать такие вещи",
|
||
"почём я знаю, спроси другого",
|
||
"слушай, я сейчас не в форме",
|
||
"знаешь, давай в другой раз",
|
||
"понимаешь, сил нет совсем",
|
||
"смотри, вопрос сложный",
|
||
"короче, я пас",
|
||
"так себе идея спрашивать меня",
|
||
"ничего не приходит в голову",
|
||
"пусто в голове",
|
||
"тишина, ни одной мысли",
|
||
"ничё не понимаю",
|
||
"да ладно тебе, не дави",
|
||
"ну такое себе вопросик",
|
||
"не моё это, точно",
|
||
"мимо кассы, спрашивай дальше",
|
||
"не в тему вопрос",
|
||
"утомилась я от таких вопросов",
|
||
"устала думать сегодня",
|
||
"сил нет разбираться",
|
||
"без сил совсем",
|
||
"еле держусь на ногах",
|
||
"не до того мне сейчас",
|
||
"не сейчас, правда",
|
||
"потом как-нибудь",
|
||
"неохота вникать",
|
||
"лень разбираться честно",
|
||
"забей на этот вопрос",
|
||
"забудь что спрашивал",
|
||
"пропусти этот момент",
|
||
"не важно это сейчас",
|
||
"неважно в данном контексте",
|
||
"не знаю даже с какой стороны подойти",
|
||
"даже не знаю что подумать",
|
||
"прям не знаю что сказать",
|
||
"вообще не знаю как ответить",
|
||
"совсем не знаю что делать",
|
||
"не могу сказать ничего определённого",
|
||
"не берусь судить об этом",
|
||
"не моя тема точно",
|
||
"не в моей компетенции вопрос",
|
||
"сложный вопрос для меня сейчас",
|
||
"вопрос на засыпку честно",
|
||
"загвоздка в том что не знаю",
|
||
"подвох чувствуется но не понимаю где",
|
||
"не всё так просто как кажется",
|
||
"не всё однозначно тут",
|
||
"хз что сказать",
|
||
"без шансов у меня",
|
||
"без вариантов ответа",
|
||
"никак не могу сформулировать",
|
||
"никоим образом не могу помочь",
|
||
"мрачно как-то на душе от вопроса",
|
||
"тоскливо отвечать когда не знаешь",
|
||
"скука смертная думать об этом",
|
||
"зевота одолевает",
|
||
"сон клонит страшный",
|
||
"глаза слипаются не шутя",
|
||
"мысли путаются совсем",
|
||
"голова не варит сегодня",
|
||
"мозг кипит от перегруза",
|
||
"ресурс на нуле абсолютном",
|
||
"батарейка села полностью",
|
||
"аккумулятор пуст в ноль",
|
||
"энергия кончилась вся",
|
||
"заряд на исходе критическом",
|
||
"силы иссякли совсем",
|
||
"нет сил даже думать",
|
||
"нет энергии на ответ",
|
||
"нет настроения объяснять",
|
||
"нет желания вникать",
|
||
"нет мотивации разбираться",
|
||
"тяжело формулировать мысли",
|
||
"тяжко подбирать слова",
|
||
"мучительно искать ответ",
|
||
"утомительно поддерживать разговор",
|
||
"истощение полное",
|
||
"выжата как лимон",
|
||
"опустошена полностью",
|
||
"исчерпана совсем",
|
||
"на пределе возможностей",
|
||
"на нуле абсолютно",
|
||
"сдаюсь без боя",
|
||
"капитуляция полная",
|
||
"финал истории",
|
||
"конец связи, пока",
|
||
"всё, я всё",
|
||
"стоп машина",
|
||
"пауза на неопределённо",
|
||
"перерыв до лучших времён",
|
||
"отдых, не мешай",
|
||
"тихий час, не звони",
|
||
"отбой, все свободны",
|
||
"хватит с меня",
|
||
"довольно на сегодня",
|
||
"под завязку загружена",
|
||
"перегруз, отключаюсь",
|
||
"перегрузка системы",
|
||
"перегрев мозга",
|
||
"сбой системы, перезагрузка",
|
||
"отключение от сети",
|
||
"режим сна активирован",
|
||
"спящий режим включён",
|
||
"гибернация запущена",
|
||
"автовыключение через секунду",
|
||
"нет сигнала, не найдена",
|
||
"нет связи, абонент недоступен",
|
||
"обрыв соединения",
|
||
"разрыв контакта",
|
||
"пауза в эфире",
|
||
"вне зоны покрытия",
|
||
"вне доступа сейчас",
|
||
"вне зоны доступа, попробуйте позже",
|
||
"не на связи сегодня",
|
||
"не в сети, не онлайн",
|
||
"оффлайн полностью",
|
||
"вне игры, замените игрока",
|
||
"голова кругом идёт",
|
||
"мысли разбежались кто куда",
|
||
"слова теряются на подходе",
|
||
"фразы рассыпаются",
|
||
"предложения не строятся",
|
||
"конструкций нет в наличии",
|
||
"аргументы исчерпаны",
|
||
"доводы закончились",
|
||
"контраргументов нет",
|
||
"позиция не определена",
|
||
"мнение не сформировано",
|
||
"точка зрения отсутствует",
|
||
"понимание вопроса на нуле",
|
||
"компетенция в теме минимальна",
|
||
"экспертиза не моя",
|
||
"не мой участок работы",
|
||
"не моя зона ответственности",
|
||
"не моя территория",
|
||
"не мой формат совсем",
|
||
"не мой стиль отвечать",
|
||
"не мой уровень компетенции",
|
||
"не мой диапазон знаний",
|
||
"не мой запас информации",
|
||
"не мой опыт в этом",
|
||
"не моя практика",
|
||
"не моя специализация точно",
|
||
"не мой профиль",
|
||
"не мой конёк",
|
||
"не мой случай",
|
||
"не мой пример",
|
||
"не мой прецедент",
|
||
]
|
||
|
||
# Generate sentences ensuring uniqueness and limited starter repetition
|
||
generated = set()
|
||
starter_counts = {}
|
||
|
||
def build_sentence():
|
||
"""Build a varied tired mood sentence."""
|
||
strategy = random.choice(['template', 'combo', 'short', 'medium'])
|
||
|
||
if strategy == 'template':
|
||
return random.choice(full_templates)
|
||
elif strategy == 'short':
|
||
return random.choice(starters) + ", " + random.choice(endings)
|
||
elif strategy == 'medium':
|
||
return random.choice(starters) + " " + random.choice(middles)
|
||
else: # combo
|
||
parts = random.randint(2, 3)
|
||
if parts == 2:
|
||
return random.choice(starters).capitalize() + ", " + random.choice(endings)
|
||
else:
|
||
return random.choice(starters).capitalize() + " " + random.choice(middles) + ", " + random.choice(endings)
|
||
|
||
attempts = 0
|
||
max_attempts = 50000
|
||
|
||
while len(generated) < 1000 and attempts < max_attempts:
|
||
attempts += 1
|
||
sentence = build_sentence()
|
||
|
||
# Check starter similarity
|
||
starter = sentence.split()[0].lower().rstrip(',.!?')
|
||
if starter not in starter_counts:
|
||
starter_counts[starter] = 0
|
||
|
||
if starter_counts[starter] >= 10:
|
||
continue
|
||
|
||
# Ensure uniqueness
|
||
if sentence not in generated:
|
||
generated.add(sentence)
|
||
starter_counts[starter] += 1
|
||
|
||
# Write to file
|
||
output_path = "/home/kami/Programs/esp32-whisper-fine-tune/tts/data/tired-voice-dataset-list.txt"
|
||
with open(output_path, 'w', encoding='utf-8') as f:
|
||
for i, sentence in enumerate(sorted(generated), 1):
|
||
f.write(f"{sentence}\n")
|
||
|
||
print(f"Generated {len(generated)} unique sentences")
|
||
print(f"Saved to {output_path}")
|
||
print(f"Starter distribution: {len(starter_counts)} unique starters")
|
||
print(f"Max starter count: {max(starter_counts.values()) if starter_counts else 0}")
|