#include "sampling.h"
#include "log.h"
#include "llama.h"
+#include "json.hpp"
#define _USE_MATH_DEFINES // For M_PI on MSVC
#include <thread>
#include <vector>
+using json = nlohmann::ordered_json;
+
+enum outetts_version {
+ OUTETTS_V0_2,
+ OUTETTS_V0_3,
+};
+
//
// Terminal utils
//
}
// Based on: https://github.com/edwko/OuteTTS/blob/a613e79c489d8256dd657ea9168d78de75895d82/outetts/version/v1/prompt_processor.py#L39
-static std::string process_text(const std::string & text) {
+static std::string process_text(const std::string & text, const outetts_version tts_version = OUTETTS_V0_2) {
// For now I skipped text romanization as I am unsure how to handle
// uroman and MeCab implementations in C++
if (c == ' ') {
prompt_clean += "<|text_sep|>";
*/
- processed_text = std::regex_replace(processed_text, std::regex(R"(\s)"), "<|text_sep|>");
+ std::string separator = (tts_version == OUTETTS_V0_3) ? "<|space|>" : "<|text_sep|>";
+ processed_text = std::regex_replace(processed_text, std::regex(R"(\s)"), separator);
return processed_text;
}
prompt_add(prompt, vocab, "<|im_start|>\n", true, true);
}
-static std::vector<llama_token> prepare_guide_tokens(const llama_vocab * vocab, const std::string & str) {
- const std::string& delimiter = "<|text_sep|>";
+static std::vector<llama_token> prepare_guide_tokens(const llama_vocab * vocab, const std::string & str, const outetts_version tts_version = OUTETTS_V0_2) {
+ const std::string& delimiter = (tts_version == OUTETTS_V0_3 ? "<|space|>" : "<|text_sep|>");
std::vector<llama_token> result;
size_t start = 0;
return result;
}
+static json speaker_from_file(const std::string & speaker_file) {
+ std::ifstream file(speaker_file);
+ if (!file) {
+ LOG_ERR("%s: Failed to open file '%s' for reading\n", __func__, speaker_file.c_str());
+ return json();
+ }
+
+ json speaker = json::parse(file);
+ return speaker;
+}
+
+static outetts_version get_tts_version(llama_model *model, json speaker = json::object()) {
+ if (speaker.contains("version")) {
+ std::string version = speaker["version"].get<std::string>();
+ if (version == "0.2") {
+ return OUTETTS_V0_2;
+ } else if (version == "0.3") {
+ return OUTETTS_V0_3;
+ } else {
+ LOG_ERR("%s: Unsupported speaker version '%s'\n", __func__, version.c_str());
+ }
+ }
+
+ // Also could get version from model itself
+ const char *chat_template = llama_model_chat_template(model, nullptr);
+ if (chat_template && std::string(chat_template) == "outetts-0.3") {
+ return OUTETTS_V0_3;
+ }
+
+ // Use 0.2 as the default version
+ return OUTETTS_V0_2;
+}
+
+static std::string audio_text_from_speaker(json speaker, const outetts_version tts_version = OUTETTS_V0_2) {
+ std::string audio_text = "<|text_start|>";
+
+ if (tts_version == OUTETTS_V0_2 || tts_version == OUTETTS_V0_3) {
+ std::string separator = (tts_version == OUTETTS_V0_3) ? "<|space|>" : "<|text_sep|>";
+ for (const auto &word : speaker["words"]) {
+ audio_text += word["word"].get<std::string>() + separator;
+ }
+ }
+
+ return audio_text;
+}
+
+static std::string audio_data_from_speaker(json speaker, const outetts_version tts_version = OUTETTS_V0_2) {
+ std::string audio_data = "<|audio_start|>\n";
+
+ if (tts_version == OUTETTS_V0_2 || tts_version == OUTETTS_V0_3) {
+ std::string code_start = (tts_version == OUTETTS_V0_3) ? "" : "<|code_start|>";
+ std::string code_end = (tts_version == OUTETTS_V0_3) ? "<|space|>" : "<|code_end|>";
+ for (const auto &word : speaker["words"]) {
+ std::string word_text = word["word"].get<std::string>();
+ double duration = word["duration"].get<double>();
+ std::vector<int> codes = word["codes"].get<std::vector<int>>();
+
+ // Create the audio output entry
+ std::ostringstream word_entry;
+ word_entry << word_text << "<|t_" << std::fixed << std::setprecision(2)
+ << duration << "|>" + code_start;
+ for (const auto &Code : codes) {
+ word_entry << "<|" << Code << "|>";
+ }
+ word_entry << code_end << "\n";
+ audio_data += word_entry.str();
+ }
+ }
+
+ return audio_data;
+}
+
int main(int argc, char ** argv) {
common_params params;
std::vector<llama_token> codes;
std::vector<llama_token> guide_tokens;
- // process prompt and generate voice codes
- {
- LOG_INF("%s: constructing prompt ..\n", __func__);
-
- std::vector<llama_token> prompt_inp;
-
- prompt_init(prompt_inp, vocab);
-
- prompt_add(prompt_inp, vocab, "<|text_start|>the<|text_sep|>overall<|text_sep|>package<|text_sep|>from<|text_sep|>just<|text_sep|>two<|text_sep|>people<|text_sep|>is<|text_sep|>pretty<|text_sep|>remarkable<|text_sep|>sure<|text_sep|>i<|text_sep|>have<|text_sep|>some<|text_sep|>critiques<|text_sep|>about<|text_sep|>some<|text_sep|>of<|text_sep|>the<|text_sep|>gameplay<|text_sep|>aspects<|text_sep|>but<|text_sep|>its<|text_sep|>still<|text_sep|>really<|text_sep|>enjoyable<|text_sep|>and<|text_sep|>it<|text_sep|>looks<|text_sep|>lovely<|text_sep|>", false, true);
-
- // convert the input text into the necessary format expected by OuteTTS
- {
- std::string prompt_clean = process_text(params.prompt);
- if (params.vocoder.use_guide_tokens) {
- guide_tokens = prepare_guide_tokens(vocab, prompt_clean);
- }
-
- LOG_INF("%s: prompt: '%s'\n", __func__, prompt_clean.c_str());
-
- prompt_add(prompt_inp, vocab, prompt_clean, false, true);
- }
-
- prompt_add(prompt_inp, vocab, "<|text_end|>\n", false, true);
-
- // disabled to save time on tokenizing each time
- // TODO: load voices from the json files
-#if 0
- const std::string voice_data = R"(<|audio_start|>
+ // the default speaker profile is from: https://github.com/edwko/OuteTTS/blob/main/outetts/version/v1/default_speakers/en_male_1.json
+ std::string audio_text = "<|text_start|>the<|text_sep|>overall<|text_sep|>package<|text_sep|>from<|text_sep|>just<|text_sep|>two<|text_sep|>people<|text_sep|>is<|text_sep|>pretty<|text_sep|>remarkable<|text_sep|>sure<|text_sep|>i<|text_sep|>have<|text_sep|>some<|text_sep|>critiques<|text_sep|>about<|text_sep|>some<|text_sep|>of<|text_sep|>the<|text_sep|>gameplay<|text_sep|>aspects<|text_sep|>but<|text_sep|>its<|text_sep|>still<|text_sep|>really<|text_sep|>enjoyable<|text_sep|>and<|text_sep|>it<|text_sep|>looks<|text_sep|>lovely<|text_sep|>";
+ std::string audio_data = R"(<|audio_start|>
the<|t_0.08|><|code_start|><|257|><|740|><|636|><|913|><|788|><|1703|><|code_end|>
overall<|t_0.36|><|code_start|><|127|><|201|><|191|><|774|><|700|><|532|><|1056|><|557|><|798|><|298|><|1741|><|747|><|1662|><|1617|><|1702|><|1527|><|368|><|1588|><|1049|><|1008|><|1625|><|747|><|1576|><|728|><|1019|><|1696|><|1765|><|code_end|>
package<|t_0.56|><|code_start|><|935|><|584|><|1319|><|627|><|1016|><|1491|><|1344|><|1117|><|1526|><|1040|><|239|><|1435|><|951|><|498|><|723|><|1180|><|535|><|789|><|1649|><|1637|><|78|><|465|><|1668|><|901|><|595|><|1675|><|117|><|1009|><|1667|><|320|><|840|><|79|><|507|><|1762|><|1508|><|1228|><|1768|><|802|><|1450|><|1457|><|232|><|639|><|code_end|>
looks<|t_0.27|><|code_start|><|1281|><|1266|><|1755|><|572|><|248|><|1751|><|1257|><|695|><|1380|><|457|><|659|><|585|><|1315|><|1105|><|1776|><|736|><|24|><|736|><|654|><|1027|><|code_end|>
lovely<|t_0.56|><|code_start|><|634|><|596|><|1766|><|1556|><|1306|><|1285|><|1481|><|1721|><|1123|><|438|><|1246|><|1251|><|795|><|659|><|1381|><|1658|><|217|><|1772|><|562|><|952|><|107|><|1129|><|1112|><|467|><|550|><|1079|><|840|><|1615|><|1469|><|1380|><|168|><|917|><|836|><|1827|><|437|><|583|><|67|><|595|><|1087|><|1646|><|1493|><|1677|><|code_end|>)";
- auto tmp = common_tokenize(vocab, voice_data, false, true);
- printf("\n\n");
- for (int i = 0; i < tmp.size(); ++i) {
- printf("%d, ", tmp[i]);
+ // audio data for 0.3 version
+ outetts_version tts_version = get_tts_version(model_ttc);
+ if (tts_version == OUTETTS_V0_3) {
+ audio_text = std::regex_replace(audio_text, std::regex(R"(<\|text_sep\|>)"), "<|space|>");
+ audio_data = std::regex_replace(audio_data, std::regex(R"(<\|code_start\|>)"), "");
+ audio_data = std::regex_replace(audio_data, std::regex(R"(<\|code_end\|>)"), "<|space|>");
+ }
+
+ // load speaker if given
+ if (!params.vocoder.speaker_file.empty()) {
+ LOG_INF("%s: loading speaker ..\n", __func__);
+ json speaker = speaker_from_file(params.vocoder.speaker_file);
+ if (speaker.empty()) {
+ LOG_ERR("%s: Failed to load speaker file '%s'\n", __func__, params.vocoder.speaker_file.c_str());
+ return 1;
+ }
+ audio_text = audio_text_from_speaker(speaker, tts_version);
+ audio_data = audio_data_from_speaker(speaker, tts_version);
+ }
+
+ // process prompt and generate voice codes
+ {
+ LOG_INF("%s: constructing prompt ..\n", __func__);
+
+ std::vector<llama_token> prompt_inp;
+
+ prompt_init(prompt_inp, vocab);
+
+ prompt_add(prompt_inp, vocab, audio_text, false, true);
+
+ // convert the input text into the necessary format expected by OuteTTS
+ {
+ std::string prompt_clean = process_text(params.prompt, tts_version);
+ if (params.vocoder.use_guide_tokens) {
+ guide_tokens = prepare_guide_tokens(vocab, prompt_clean, tts_version);
+ }
+
+ LOG_INF("%s: prompt: '%s'\n", __func__, prompt_clean.c_str());
+
+ prompt_add(prompt_inp, vocab, prompt_clean, false, true);
}
- printf("\n\n");
+
+ prompt_add(prompt_inp, vocab, "<|text_end|>\n", false, true);
+
+ if (!params.vocoder.speaker_file.empty()) {
+ prompt_add(prompt_inp, vocab, audio_data, false, true);
+ } else {
+ // disabled to save time on tokenizing each time
+#if 1
+ const std::string voice_data = audio_data;
+
+ auto tmp = common_tokenize(vocab, voice_data, false, true);
+ printf("\n\n");
+ for (size_t i = 0; i < tmp.size(); ++i) {
+ printf("%d, ", tmp[i]);
+ }
+ printf("\n\n");
+ prompt_add(prompt_inp, tmp);
#else
- prompt_add(prompt_inp, llama_tokens {
- 151667, 198, 1782, 155780, 151669, 151929, 152412, 152308, 152585,
- 152460, 153375, 151670, 198, 74455, 155808, 151669, 151799,
- 151873, 151863, 152446, 152372, 152204, 152728, 152229, 152470,
- 151970, 153413, 152419, 153334, 153289, 153374, 153199, 152040,
- 153260, 152721, 152680, 153297, 152419, 153248, 152400, 152691,
- 153368, 153437, 151670, 198, 1722, 155828, 151669, 152607,
- 152256, 152991, 152299, 152688, 153163, 153016, 152789, 153198,
- 152712, 151911, 153107, 152623, 152170, 152395, 152852, 152207,
- 152461, 153321, 153309, 151750, 152137, 153340, 152573, 152267,
- 153347, 151789, 152681, 153339, 151992, 152512, 151751, 152179,
- 153434, 153180, 152900, 153440, 152474, 153122, 153129, 151904,
- 152311, 151670, 198, 1499, 155791, 151669, 152276, 152454,
- 153354, 152544, 153204, 153272, 152708, 153433, 152319, 153226,
- 153043, 152325, 153267, 152622, 151670, 198, 4250, 155797,
- 151669, 153454, 153342, 151989, 152458, 153420, 152303, 152271,
- 152827, 153036, 153196, 151708, 153263, 152561, 153207, 152213,
- 152112, 153204, 151722, 152542, 151670, 198, 19789, 155796,
- 151669, 153353, 153182, 152345, 152471, 152477, 153014, 152002,
- 152191, 151734, 152312, 152810, 152237, 153224, 153169, 153224,
- 152244, 153387, 153404, 151670, 198, 16069, 155811, 151669,
- 152265, 151946, 151808, 152412, 152363, 152305, 153156, 152733,
- 152810, 153157, 152016, 152100, 152069, 153234, 152317, 152589,
- 152707, 153121, 153341, 152159, 152114, 153156, 153001, 153504,
- 153376, 152272, 152433, 152325, 151941, 151670, 198, 285,
- 155788, 151669, 152238, 152255, 153427, 152318, 153009, 152381,
- 152474, 152680, 152157, 153255, 152324, 151682, 151670, 198,
- 32955, 155804, 151669, 153490, 153419, 152364, 152405, 152682,
- 152206, 152078, 153369, 152725, 153193, 153027, 152946, 152488,
- 153070, 151883, 152890, 152489, 153144, 153375, 152358, 151685,
- 152494, 152117, 152740, 151670, 198, 37448, 480, 155840, 151669,
- 151902, 152720, 153377, 152027, 152378, 152821, 153207, 153459,
- 153028, 153068, 152507, 153255, 152158, 152921, 151958, 152609,
- 152748, 152822, 152286, 151714, 152730, 152377, 152353, 152470,
- 152606, 152162, 152186, 153071, 152244, 153118, 153375, 153018,
- 152712, 153098, 152976, 152336, 151843, 153202, 152297, 151736,
- 153380, 153502, 152702, 152115, 153181, 152735, 153277, 153457,
- 152393, 153112, 152595, 151670, 198, 19098, 155808, 151669,
- 152464, 153452, 152595, 153312, 151937, 151933, 153197, 152239,
- 153163, 152922, 153402, 152034, 152591, 153438, 152215, 151673,
- 152005, 151785, 152642, 151924, 153278, 151805, 151974, 153482,
- 152718, 152862, 153347, 151670, 198, 72, 155780, 151669, 151795,
- 152111, 152746, 152377, 153471, 152309, 151670, 198, 19016,
- 155788, 151669, 153181, 152271, 152190, 152842, 152224, 152701,
- 152939, 152536, 152091, 151815, 152733, 151672, 151670, 198,
- 14689, 155788, 151669, 152291, 152072, 152942, 151734, 153042,
- 153504, 152589, 153333, 151839, 151941, 153038, 153180, 151670,
- 198, 36996, 8303, 155832, 151669, 152231, 152256, 152835,
- 152801, 152985, 153400, 152393, 152818, 152765, 152249, 152600,
- 151699, 152302, 152752, 153018, 153009, 151992, 153054, 152847,
- 153354, 153228, 152662, 153355, 152532, 153393, 151782, 152458,
- 152048, 152757, 152428, 153195, 151906, 153006, 153178, 153250,
- 152331, 152284, 152780, 153138, 153319, 151980, 153142, 152418,
- 152228, 152733, 151670, 198, 9096, 155801, 151669, 151698,
- 153321, 152217, 153039, 152935, 153400, 152122, 152531, 153106,
- 152169, 152892, 152957, 151851, 152427, 152826, 152451, 151851,
- 152901, 152885, 152594, 153446, 153080, 151670, 198, 14689,
- 155795, 151669, 152658, 151700, 153321, 152450, 152530, 153191,
- 151673, 151690, 151698, 152714, 152846, 152981, 153171, 153384,
- 153364, 153188, 153246, 151670, 198, 1055, 155779, 151669,
- 151869, 152388, 152711, 153334, 151736, 151670, 198, 1782,
- 155780, 151669, 153483, 153240, 152241, 152558, 152697, 153046,
- 151670, 198, 5804, 1363, 155820, 151669, 152941, 152764, 152605,
- 153034, 153434, 153372, 153347, 151887, 152453, 152758, 152133,
- 152510, 152694, 152431, 152321, 153088, 152676, 152223, 152581,
- 152459, 152015, 152502, 153063, 152712, 153294, 153451, 153032,
- 152903, 152859, 152989, 151748, 152669, 152661, 152650, 152409,
- 151861, 151670, 198, 300, 7973, 155828, 151669, 153095, 152469,
- 152988, 152894, 151819, 152391, 153019, 152058, 153062, 153230,
- 151826, 152112, 152306, 152264, 152769, 153390, 152384, 152435,
- 152790, 153393, 152983, 152540, 152252, 152034, 153107, 152540,
- 151919, 151893, 152558, 152817, 152946, 152956, 152129, 152715,
- 153131, 153490, 151734, 152271, 152707, 151734, 153321, 152450,
- 151670, 198, 8088, 155792, 151669, 152452, 153497, 153353,
- 152679, 152533, 152382, 152374, 152611, 153341, 153163, 152285,
- 153411, 152495, 153141, 152320, 151670, 198, 1199, 155781,
- 151669, 151764, 152360, 153295, 152634, 153342, 152199, 152271,
- 151670, 198, 43366, 155799, 151669, 152308, 151682, 152889,
- 152016, 152385, 152629, 152495, 151826, 153321, 152958, 152180,
- 151886, 153432, 152922, 152128, 153024, 153040, 152593, 152287,
- 151677, 151670, 198, 53660, 155808, 151669, 151727, 152092,
- 152680, 153331, 151699, 152316, 152938, 152289, 152433, 153384,
- 151781, 153137, 153259, 152175, 153213, 152291, 151869, 152691,
- 152489, 151941, 152049, 152034, 153053, 152179, 153160, 151676,
- 153367, 151670, 198, 268, 4123, 480, 155821, 151669, 152350,
- 152173, 152536, 151991, 151960, 153144, 153013, 152358, 152234,
- 153135, 152291, 153235, 152143, 152583, 152402, 153483, 152678,
- 152192, 152533, 152946, 151797, 153103, 152310, 152293, 151825,
- 152548, 153442, 152109, 152659, 153325, 152781, 152570, 152957,
- 151752, 152265, 153381, 152515, 151670, 198, 437, 155787,
- 151669, 152957, 152659, 151975, 152709, 152402, 152836, 152174,
- 151792, 153409, 153327, 152990, 151670, 198, 275, 155781,
- 151669, 152520, 153038, 152067, 153273, 153185, 152265, 152974,
- 151670, 198, 94273, 155799, 151669, 152953, 152938, 153427,
- 152244, 151920, 153423, 152929, 152367, 153052, 152129, 152331,
- 152257, 152987, 152777, 153448, 152408, 151696, 152408, 152326,
- 152699, 151670, 198, 385, 16239, 155828, 151669, 152306, 152268,
- 153438, 153228, 152978, 152957, 153153, 153393, 152795, 152110,
- 152918, 152923, 152467, 152331, 153053, 153330, 151889, 153444,
- 152234, 152624, 151779, 152801, 152784, 152139, 152222, 152751,
- 152512, 153287, 153141, 153052, 151840, 152589, 152508, 153499,
- 152109, 152255, 151739, 152267, 152759, 153318, 153165, 153349,
- 151670,});
+ prompt_add(prompt_inp, llama_tokens {
+ 151667, 198, 1782, 155780, 151669, 151929, 152412, 152308, 152585,
+ 152460, 153375, 151670, 198, 74455, 155808, 151669, 151799,
+ 151873, 151863, 152446, 152372, 152204, 152728, 152229, 152470,
+ 151970, 153413, 152419, 153334, 153289, 153374, 153199, 152040,
+ 153260, 152721, 152680, 153297, 152419, 153248, 152400, 152691,
+ 153368, 153437, 151670, 198, 1722, 155828, 151669, 152607,
+ 152256, 152991, 152299, 152688, 153163, 153016, 152789, 153198,
+ 152712, 151911, 153107, 152623, 152170, 152395, 152852, 152207,
+ 152461, 153321, 153309, 151750, 152137, 153340, 152573, 152267,
+ 153347, 151789, 152681, 153339, 151992, 152512, 151751, 152179,
+ 153434, 153180, 152900, 153440, 152474, 153122, 153129, 151904,
+ 152311, 151670, 198, 1499, 155791, 151669, 152276, 152454,
+ 153354, 152544, 153204, 153272, 152708, 153433, 152319, 153226,
+ 153043, 152325, 153267, 152622, 151670, 198, 4250, 155797,
+ 151669, 153454, 153342, 151989, 152458, 153420, 152303, 152271,
+ 152827, 153036, 153196, 151708, 153263, 152561, 153207, 152213,
+ 152112, 153204, 151722, 152542, 151670, 198, 19789, 155796,
+ 151669, 153353, 153182, 152345, 152471, 152477, 153014, 152002,
+ 152191, 151734, 152312, 152810, 152237, 153224, 153169, 153224,
+ 152244, 153387, 153404, 151670, 198, 16069, 155811, 151669,
+ 152265, 151946, 151808, 152412, 152363, 152305, 153156, 152733,
+ 152810, 153157, 152016, 152100, 152069, 153234, 152317, 152589,
+ 152707, 153121, 153341, 152159, 152114, 153156, 153001, 153504,
+ 153376, 152272, 152433, 152325, 151941, 151670, 198, 285,
+ 155788, 151669, 152238, 152255, 153427, 152318, 153009, 152381,
+ 152474, 152680, 152157, 153255, 152324, 151682, 151670, 198,
+ 32955, 155804, 151669, 153490, 153419, 152364, 152405, 152682,
+ 152206, 152078, 153369, 152725, 153193, 153027, 152946, 152488,
+ 153070, 151883, 152890, 152489, 153144, 153375, 152358, 151685,
+ 152494, 152117, 152740, 151670, 198, 37448, 480, 155840, 151669,
+ 151902, 152720, 153377, 152027, 152378, 152821, 153207, 153459,
+ 153028, 153068, 152507, 153255, 152158, 152921, 151958, 152609,
+ 152748, 152822, 152286, 151714, 152730, 152377, 152353, 152470,
+ 152606, 152162, 152186, 153071, 152244, 153118, 153375, 153018,
+ 152712, 153098, 152976, 152336, 151843, 153202, 152297, 151736,
+ 153380, 153502, 152702, 152115, 153181, 152735, 153277, 153457,
+ 152393, 153112, 152595, 151670, 198, 19098, 155808, 151669,
+ 152464, 153452, 152595, 153312, 151937, 151933, 153197, 152239,
+ 153163, 152922, 153402, 152034, 152591, 153438, 152215, 151673,
+ 152005, 151785, 152642, 151924, 153278, 151805, 151974, 153482,
+ 152718, 152862, 153347, 151670, 198, 72, 155780, 151669, 151795,
+ 152111, 152746, 152377, 153471, 152309, 151670, 198, 19016,
+ 155788, 151669, 153181, 152271, 152190, 152842, 152224, 152701,
+ 152939, 152536, 152091, 151815, 152733, 151672, 151670, 198,
+ 14689, 155788, 151669, 152291, 152072, 152942, 151734, 153042,
+ 153504, 152589, 153333, 151839, 151941, 153038, 153180, 151670,
+ 198, 36996, 8303, 155832, 151669, 152231, 152256, 152835,
+ 152801, 152985, 153400, 152393, 152818, 152765, 152249, 152600,
+ 151699, 152302, 152752, 153018, 153009, 151992, 153054, 152847,
+ 153354, 153228, 152662, 153355, 152532, 153393, 151782, 152458,
+ 152048, 152757, 152428, 153195, 151906, 153006, 153178, 153250,
+ 152331, 152284, 152780, 153138, 153319, 151980, 153142, 152418,
+ 152228, 152733, 151670, 198, 9096, 155801, 151669, 151698,
+ 153321, 152217, 153039, 152935, 153400, 152122, 152531, 153106,
+ 152169, 152892, 152957, 151851, 152427, 152826, 152451, 151851,
+ 152901, 152885, 152594, 153446, 153080, 151670, 198, 14689,
+ 155795, 151669, 152658, 151700, 153321, 152450, 152530, 153191,
+ 151673, 151690, 151698, 152714, 152846, 152981, 153171, 153384,
+ 153364, 153188, 153246, 151670, 198, 1055, 155779, 151669,
+ 151869, 152388, 152711, 153334, 151736, 151670, 198, 1782,
+ 155780, 151669, 153483, 153240, 152241, 152558, 152697, 153046,
+ 151670, 198, 5804, 1363, 155820, 151669, 152941, 152764, 152605,
+ 153034, 153434, 153372, 153347, 151887, 152453, 152758, 152133,
+ 152510, 152694, 152431, 152321, 153088, 152676, 152223, 152581,
+ 152459, 152015, 152502, 153063, 152712, 153294, 153451, 153032,
+ 152903, 152859, 152989, 151748, 152669, 152661, 152650, 152409,
+ 151861, 151670, 198, 300, 7973, 155828, 151669, 153095, 152469,
+ 152988, 152894, 151819, 152391, 153019, 152058, 153062, 153230,
+ 151826, 152112, 152306, 152264, 152769, 153390, 152384, 152435,
+ 152790, 153393, 152983, 152540, 152252, 152034, 153107, 152540,
+ 151919, 151893, 152558, 152817, 152946, 152956, 152129, 152715,
+ 153131, 153490, 151734, 152271, 152707, 151734, 153321, 152450,
+ 151670, 198, 8088, 155792, 151669, 152452, 153497, 153353,
+ 152679, 152533, 152382, 152374, 152611, 153341, 153163, 152285,
+ 153411, 152495, 153141, 152320, 151670, 198, 1199, 155781,
+ 151669, 151764, 152360, 153295, 152634, 153342, 152199, 152271,
+ 151670, 198, 43366, 155799, 151669, 152308, 151682, 152889,
+ 152016, 152385, 152629, 152495, 151826, 153321, 152958, 152180,
+ 151886, 153432, 152922, 152128, 153024, 153040, 152593, 152287,
+ 151677, 151670, 198, 53660, 155808, 151669, 151727, 152092,
+ 152680, 153331, 151699, 152316, 152938, 152289, 152433, 153384,
+ 151781, 153137, 153259, 152175, 153213, 152291, 151869, 152691,
+ 152489, 151941, 152049, 152034, 153053, 152179, 153160, 151676,
+ 153367, 151670, 198, 268, 4123, 480, 155821, 151669, 152350,
+ 152173, 152536, 151991, 151960, 153144, 153013, 152358, 152234,
+ 153135, 152291, 153235, 152143, 152583, 152402, 153483, 152678,
+ 152192, 152533, 152946, 151797, 153103, 152310, 152293, 151825,
+ 152548, 153442, 152109, 152659, 153325, 152781, 152570, 152957,
+ 151752, 152265, 153381, 152515, 151670, 198, 437, 155787,
+ 151669, 152957, 152659, 151975, 152709, 152402, 152836, 152174,
+ 151792, 153409, 153327, 152990, 151670, 198, 275, 155781,
+ 151669, 152520, 153038, 152067, 153273, 153185, 152265, 152974,
+ 151670, 198, 94273, 155799, 151669, 152953, 152938, 153427,
+ 152244, 151920, 153423, 152929, 152367, 153052, 152129, 152331,
+ 152257, 152987, 152777, 153448, 152408, 151696, 152408, 152326,
+ 152699, 151670, 198, 385, 16239, 155828, 151669, 152306, 152268,
+ 153438, 153228, 152978, 152957, 153153, 153393, 152795, 152110,
+ 152918, 152923, 152467, 152331, 153053, 153330, 151889, 153444,
+ 152234, 152624, 151779, 152801, 152784, 152139, 152222, 152751,
+ 152512, 153287, 153141, 153052, 151840, 152589, 152508, 153499,
+ 152109, 152255, 151739, 152267, 152759, 153318, 153165, 153349,
+ 151670,});
#endif
+ }
// print the prompt token-by-token