mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2025-06-28 12:25:03 +00:00
tts: add speaker file support (#12048)
* tts: add speaker file support Signed-off-by: dm4 <sunrisedm4@gmail.com> * tts: handle outetts-0.3 * tts : add new line in error message --------- Signed-off-by: dm4 <sunrisedm4@gmail.com> Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
This commit is contained in:
@ -2452,6 +2452,13 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
|||||||
params.vocoder.use_guide_tokens = true;
|
params.vocoder.use_guide_tokens = true;
|
||||||
}
|
}
|
||||||
).set_examples({LLAMA_EXAMPLE_TTS, LLAMA_EXAMPLE_SERVER}));
|
).set_examples({LLAMA_EXAMPLE_TTS, LLAMA_EXAMPLE_SERVER}));
|
||||||
|
add_opt(common_arg(
|
||||||
|
{"--tts-speaker-file"}, "FNAME",
|
||||||
|
"speaker file path for audio generation",
|
||||||
|
[](common_params & params, const std::string & value) {
|
||||||
|
params.vocoder.speaker_file = value;
|
||||||
|
}
|
||||||
|
).set_examples({LLAMA_EXAMPLE_TTS}));
|
||||||
|
|
||||||
// model-specific
|
// model-specific
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
|
@ -200,6 +200,8 @@ struct common_params_vocoder {
|
|||||||
std::string model = ""; // model path // NOLINT
|
std::string model = ""; // model path // NOLINT
|
||||||
std::string model_url = ""; // model url to download // NOLINT
|
std::string model_url = ""; // model url to download // NOLINT
|
||||||
|
|
||||||
|
std::string speaker_file = ""; // speaker file path // NOLINT
|
||||||
|
|
||||||
bool use_guide_tokens = false; // enable guide tokens to improve TTS accuracy // NOLINT
|
bool use_guide_tokens = false; // enable guide tokens to improve TTS accuracy // NOLINT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include "sampling.h"
|
#include "sampling.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "llama.h"
|
#include "llama.h"
|
||||||
|
#include "json.hpp"
|
||||||
|
|
||||||
#define _USE_MATH_DEFINES // For M_PI on MSVC
|
#define _USE_MATH_DEFINES // For M_PI on MSVC
|
||||||
|
|
||||||
@ -16,6 +17,13 @@
|
|||||||
#include <thread>
|
#include <thread>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
using json = nlohmann::ordered_json;
|
||||||
|
|
||||||
|
enum outetts_version {
|
||||||
|
OUTETTS_V0_2,
|
||||||
|
OUTETTS_V0_3,
|
||||||
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Terminal utils
|
// Terminal utils
|
||||||
//
|
//
|
||||||
@ -371,7 +379,7 @@ static std::string replace_numbers_with_words(const std::string & input_text) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Based on: https://github.com/edwko/OuteTTS/blob/a613e79c489d8256dd657ea9168d78de75895d82/outetts/version/v1/prompt_processor.py#L39
|
// 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
|
// For now I skipped text romanization as I am unsure how to handle
|
||||||
// uroman and MeCab implementations in C++
|
// uroman and MeCab implementations in C++
|
||||||
@ -401,7 +409,8 @@ static std::string process_text(const std::string & text) {
|
|||||||
if (c == ' ') {
|
if (c == ' ') {
|
||||||
prompt_clean += "<|text_sep|>";
|
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;
|
return processed_text;
|
||||||
}
|
}
|
||||||
@ -425,8 +434,8 @@ static void prompt_init(llama_tokens & prompt, const llama_vocab * vocab) {
|
|||||||
prompt_add(prompt, vocab, "<|im_start|>\n", true, true);
|
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) {
|
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 = "<|text_sep|>";
|
const std::string& delimiter = (tts_version == OUTETTS_V0_3 ? "<|space|>" : "<|text_sep|>");
|
||||||
|
|
||||||
std::vector<llama_token> result;
|
std::vector<llama_token> result;
|
||||||
size_t start = 0;
|
size_t start = 0;
|
||||||
@ -452,6 +461,78 @@ static std::vector<llama_token> prepare_guide_tokens(const llama_vocab * vocab,
|
|||||||
return result;
|
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) {
|
int main(int argc, char ** argv) {
|
||||||
common_params params;
|
common_params params;
|
||||||
|
|
||||||
@ -523,34 +604,9 @@ int main(int argc, char ** argv) {
|
|||||||
std::vector<llama_token> codes;
|
std::vector<llama_token> codes;
|
||||||
std::vector<llama_token> guide_tokens;
|
std::vector<llama_token> guide_tokens;
|
||||||
|
|
||||||
// process prompt and generate voice codes
|
// 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|>";
|
||||||
LOG_INF("%s: constructing prompt ..\n", __func__);
|
std::string audio_data = R"(<|audio_start|>
|
||||||
|
|
||||||
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<|t_0.08|><|code_start|><|257|><|740|><|636|><|913|><|788|><|1703|><|code_end|>
|
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|>
|
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|>
|
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|>
|
||||||
@ -582,117 +638,170 @@ it<|t_0.09|><|code_start|><|848|><|1366|><|395|><|1601|><|1513|><|593|><|1302|><
|
|||||||
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|>
|
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|>)";
|
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);
|
// audio data for 0.3 version
|
||||||
printf("\n\n");
|
outetts_version tts_version = get_tts_version(model_ttc);
|
||||||
for (int i = 0; i < tmp.size(); ++i) {
|
if (tts_version == OUTETTS_V0_3) {
|
||||||
printf("%d, ", tmp[i]);
|
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;
|
||||||
}
|
}
|
||||||
printf("\n\n");
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
#else
|
||||||
prompt_add(prompt_inp, llama_tokens {
|
prompt_add(prompt_inp, llama_tokens {
|
||||||
151667, 198, 1782, 155780, 151669, 151929, 152412, 152308, 152585,
|
151667, 198, 1782, 155780, 151669, 151929, 152412, 152308, 152585,
|
||||||
152460, 153375, 151670, 198, 74455, 155808, 151669, 151799,
|
152460, 153375, 151670, 198, 74455, 155808, 151669, 151799,
|
||||||
151873, 151863, 152446, 152372, 152204, 152728, 152229, 152470,
|
151873, 151863, 152446, 152372, 152204, 152728, 152229, 152470,
|
||||||
151970, 153413, 152419, 153334, 153289, 153374, 153199, 152040,
|
151970, 153413, 152419, 153334, 153289, 153374, 153199, 152040,
|
||||||
153260, 152721, 152680, 153297, 152419, 153248, 152400, 152691,
|
153260, 152721, 152680, 153297, 152419, 153248, 152400, 152691,
|
||||||
153368, 153437, 151670, 198, 1722, 155828, 151669, 152607,
|
153368, 153437, 151670, 198, 1722, 155828, 151669, 152607,
|
||||||
152256, 152991, 152299, 152688, 153163, 153016, 152789, 153198,
|
152256, 152991, 152299, 152688, 153163, 153016, 152789, 153198,
|
||||||
152712, 151911, 153107, 152623, 152170, 152395, 152852, 152207,
|
152712, 151911, 153107, 152623, 152170, 152395, 152852, 152207,
|
||||||
152461, 153321, 153309, 151750, 152137, 153340, 152573, 152267,
|
152461, 153321, 153309, 151750, 152137, 153340, 152573, 152267,
|
||||||
153347, 151789, 152681, 153339, 151992, 152512, 151751, 152179,
|
153347, 151789, 152681, 153339, 151992, 152512, 151751, 152179,
|
||||||
153434, 153180, 152900, 153440, 152474, 153122, 153129, 151904,
|
153434, 153180, 152900, 153440, 152474, 153122, 153129, 151904,
|
||||||
152311, 151670, 198, 1499, 155791, 151669, 152276, 152454,
|
152311, 151670, 198, 1499, 155791, 151669, 152276, 152454,
|
||||||
153354, 152544, 153204, 153272, 152708, 153433, 152319, 153226,
|
153354, 152544, 153204, 153272, 152708, 153433, 152319, 153226,
|
||||||
153043, 152325, 153267, 152622, 151670, 198, 4250, 155797,
|
153043, 152325, 153267, 152622, 151670, 198, 4250, 155797,
|
||||||
151669, 153454, 153342, 151989, 152458, 153420, 152303, 152271,
|
151669, 153454, 153342, 151989, 152458, 153420, 152303, 152271,
|
||||||
152827, 153036, 153196, 151708, 153263, 152561, 153207, 152213,
|
152827, 153036, 153196, 151708, 153263, 152561, 153207, 152213,
|
||||||
152112, 153204, 151722, 152542, 151670, 198, 19789, 155796,
|
152112, 153204, 151722, 152542, 151670, 198, 19789, 155796,
|
||||||
151669, 153353, 153182, 152345, 152471, 152477, 153014, 152002,
|
151669, 153353, 153182, 152345, 152471, 152477, 153014, 152002,
|
||||||
152191, 151734, 152312, 152810, 152237, 153224, 153169, 153224,
|
152191, 151734, 152312, 152810, 152237, 153224, 153169, 153224,
|
||||||
152244, 153387, 153404, 151670, 198, 16069, 155811, 151669,
|
152244, 153387, 153404, 151670, 198, 16069, 155811, 151669,
|
||||||
152265, 151946, 151808, 152412, 152363, 152305, 153156, 152733,
|
152265, 151946, 151808, 152412, 152363, 152305, 153156, 152733,
|
||||||
152810, 153157, 152016, 152100, 152069, 153234, 152317, 152589,
|
152810, 153157, 152016, 152100, 152069, 153234, 152317, 152589,
|
||||||
152707, 153121, 153341, 152159, 152114, 153156, 153001, 153504,
|
152707, 153121, 153341, 152159, 152114, 153156, 153001, 153504,
|
||||||
153376, 152272, 152433, 152325, 151941, 151670, 198, 285,
|
153376, 152272, 152433, 152325, 151941, 151670, 198, 285,
|
||||||
155788, 151669, 152238, 152255, 153427, 152318, 153009, 152381,
|
155788, 151669, 152238, 152255, 153427, 152318, 153009, 152381,
|
||||||
152474, 152680, 152157, 153255, 152324, 151682, 151670, 198,
|
152474, 152680, 152157, 153255, 152324, 151682, 151670, 198,
|
||||||
32955, 155804, 151669, 153490, 153419, 152364, 152405, 152682,
|
32955, 155804, 151669, 153490, 153419, 152364, 152405, 152682,
|
||||||
152206, 152078, 153369, 152725, 153193, 153027, 152946, 152488,
|
152206, 152078, 153369, 152725, 153193, 153027, 152946, 152488,
|
||||||
153070, 151883, 152890, 152489, 153144, 153375, 152358, 151685,
|
153070, 151883, 152890, 152489, 153144, 153375, 152358, 151685,
|
||||||
152494, 152117, 152740, 151670, 198, 37448, 480, 155840, 151669,
|
152494, 152117, 152740, 151670, 198, 37448, 480, 155840, 151669,
|
||||||
151902, 152720, 153377, 152027, 152378, 152821, 153207, 153459,
|
151902, 152720, 153377, 152027, 152378, 152821, 153207, 153459,
|
||||||
153028, 153068, 152507, 153255, 152158, 152921, 151958, 152609,
|
153028, 153068, 152507, 153255, 152158, 152921, 151958, 152609,
|
||||||
152748, 152822, 152286, 151714, 152730, 152377, 152353, 152470,
|
152748, 152822, 152286, 151714, 152730, 152377, 152353, 152470,
|
||||||
152606, 152162, 152186, 153071, 152244, 153118, 153375, 153018,
|
152606, 152162, 152186, 153071, 152244, 153118, 153375, 153018,
|
||||||
152712, 153098, 152976, 152336, 151843, 153202, 152297, 151736,
|
152712, 153098, 152976, 152336, 151843, 153202, 152297, 151736,
|
||||||
153380, 153502, 152702, 152115, 153181, 152735, 153277, 153457,
|
153380, 153502, 152702, 152115, 153181, 152735, 153277, 153457,
|
||||||
152393, 153112, 152595, 151670, 198, 19098, 155808, 151669,
|
152393, 153112, 152595, 151670, 198, 19098, 155808, 151669,
|
||||||
152464, 153452, 152595, 153312, 151937, 151933, 153197, 152239,
|
152464, 153452, 152595, 153312, 151937, 151933, 153197, 152239,
|
||||||
153163, 152922, 153402, 152034, 152591, 153438, 152215, 151673,
|
153163, 152922, 153402, 152034, 152591, 153438, 152215, 151673,
|
||||||
152005, 151785, 152642, 151924, 153278, 151805, 151974, 153482,
|
152005, 151785, 152642, 151924, 153278, 151805, 151974, 153482,
|
||||||
152718, 152862, 153347, 151670, 198, 72, 155780, 151669, 151795,
|
152718, 152862, 153347, 151670, 198, 72, 155780, 151669, 151795,
|
||||||
152111, 152746, 152377, 153471, 152309, 151670, 198, 19016,
|
152111, 152746, 152377, 153471, 152309, 151670, 198, 19016,
|
||||||
155788, 151669, 153181, 152271, 152190, 152842, 152224, 152701,
|
155788, 151669, 153181, 152271, 152190, 152842, 152224, 152701,
|
||||||
152939, 152536, 152091, 151815, 152733, 151672, 151670, 198,
|
152939, 152536, 152091, 151815, 152733, 151672, 151670, 198,
|
||||||
14689, 155788, 151669, 152291, 152072, 152942, 151734, 153042,
|
14689, 155788, 151669, 152291, 152072, 152942, 151734, 153042,
|
||||||
153504, 152589, 153333, 151839, 151941, 153038, 153180, 151670,
|
153504, 152589, 153333, 151839, 151941, 153038, 153180, 151670,
|
||||||
198, 36996, 8303, 155832, 151669, 152231, 152256, 152835,
|
198, 36996, 8303, 155832, 151669, 152231, 152256, 152835,
|
||||||
152801, 152985, 153400, 152393, 152818, 152765, 152249, 152600,
|
152801, 152985, 153400, 152393, 152818, 152765, 152249, 152600,
|
||||||
151699, 152302, 152752, 153018, 153009, 151992, 153054, 152847,
|
151699, 152302, 152752, 153018, 153009, 151992, 153054, 152847,
|
||||||
153354, 153228, 152662, 153355, 152532, 153393, 151782, 152458,
|
153354, 153228, 152662, 153355, 152532, 153393, 151782, 152458,
|
||||||
152048, 152757, 152428, 153195, 151906, 153006, 153178, 153250,
|
152048, 152757, 152428, 153195, 151906, 153006, 153178, 153250,
|
||||||
152331, 152284, 152780, 153138, 153319, 151980, 153142, 152418,
|
152331, 152284, 152780, 153138, 153319, 151980, 153142, 152418,
|
||||||
152228, 152733, 151670, 198, 9096, 155801, 151669, 151698,
|
152228, 152733, 151670, 198, 9096, 155801, 151669, 151698,
|
||||||
153321, 152217, 153039, 152935, 153400, 152122, 152531, 153106,
|
153321, 152217, 153039, 152935, 153400, 152122, 152531, 153106,
|
||||||
152169, 152892, 152957, 151851, 152427, 152826, 152451, 151851,
|
152169, 152892, 152957, 151851, 152427, 152826, 152451, 151851,
|
||||||
152901, 152885, 152594, 153446, 153080, 151670, 198, 14689,
|
152901, 152885, 152594, 153446, 153080, 151670, 198, 14689,
|
||||||
155795, 151669, 152658, 151700, 153321, 152450, 152530, 153191,
|
155795, 151669, 152658, 151700, 153321, 152450, 152530, 153191,
|
||||||
151673, 151690, 151698, 152714, 152846, 152981, 153171, 153384,
|
151673, 151690, 151698, 152714, 152846, 152981, 153171, 153384,
|
||||||
153364, 153188, 153246, 151670, 198, 1055, 155779, 151669,
|
153364, 153188, 153246, 151670, 198, 1055, 155779, 151669,
|
||||||
151869, 152388, 152711, 153334, 151736, 151670, 198, 1782,
|
151869, 152388, 152711, 153334, 151736, 151670, 198, 1782,
|
||||||
155780, 151669, 153483, 153240, 152241, 152558, 152697, 153046,
|
155780, 151669, 153483, 153240, 152241, 152558, 152697, 153046,
|
||||||
151670, 198, 5804, 1363, 155820, 151669, 152941, 152764, 152605,
|
151670, 198, 5804, 1363, 155820, 151669, 152941, 152764, 152605,
|
||||||
153034, 153434, 153372, 153347, 151887, 152453, 152758, 152133,
|
153034, 153434, 153372, 153347, 151887, 152453, 152758, 152133,
|
||||||
152510, 152694, 152431, 152321, 153088, 152676, 152223, 152581,
|
152510, 152694, 152431, 152321, 153088, 152676, 152223, 152581,
|
||||||
152459, 152015, 152502, 153063, 152712, 153294, 153451, 153032,
|
152459, 152015, 152502, 153063, 152712, 153294, 153451, 153032,
|
||||||
152903, 152859, 152989, 151748, 152669, 152661, 152650, 152409,
|
152903, 152859, 152989, 151748, 152669, 152661, 152650, 152409,
|
||||||
151861, 151670, 198, 300, 7973, 155828, 151669, 153095, 152469,
|
151861, 151670, 198, 300, 7973, 155828, 151669, 153095, 152469,
|
||||||
152988, 152894, 151819, 152391, 153019, 152058, 153062, 153230,
|
152988, 152894, 151819, 152391, 153019, 152058, 153062, 153230,
|
||||||
151826, 152112, 152306, 152264, 152769, 153390, 152384, 152435,
|
151826, 152112, 152306, 152264, 152769, 153390, 152384, 152435,
|
||||||
152790, 153393, 152983, 152540, 152252, 152034, 153107, 152540,
|
152790, 153393, 152983, 152540, 152252, 152034, 153107, 152540,
|
||||||
151919, 151893, 152558, 152817, 152946, 152956, 152129, 152715,
|
151919, 151893, 152558, 152817, 152946, 152956, 152129, 152715,
|
||||||
153131, 153490, 151734, 152271, 152707, 151734, 153321, 152450,
|
153131, 153490, 151734, 152271, 152707, 151734, 153321, 152450,
|
||||||
151670, 198, 8088, 155792, 151669, 152452, 153497, 153353,
|
151670, 198, 8088, 155792, 151669, 152452, 153497, 153353,
|
||||||
152679, 152533, 152382, 152374, 152611, 153341, 153163, 152285,
|
152679, 152533, 152382, 152374, 152611, 153341, 153163, 152285,
|
||||||
153411, 152495, 153141, 152320, 151670, 198, 1199, 155781,
|
153411, 152495, 153141, 152320, 151670, 198, 1199, 155781,
|
||||||
151669, 151764, 152360, 153295, 152634, 153342, 152199, 152271,
|
151669, 151764, 152360, 153295, 152634, 153342, 152199, 152271,
|
||||||
151670, 198, 43366, 155799, 151669, 152308, 151682, 152889,
|
151670, 198, 43366, 155799, 151669, 152308, 151682, 152889,
|
||||||
152016, 152385, 152629, 152495, 151826, 153321, 152958, 152180,
|
152016, 152385, 152629, 152495, 151826, 153321, 152958, 152180,
|
||||||
151886, 153432, 152922, 152128, 153024, 153040, 152593, 152287,
|
151886, 153432, 152922, 152128, 153024, 153040, 152593, 152287,
|
||||||
151677, 151670, 198, 53660, 155808, 151669, 151727, 152092,
|
151677, 151670, 198, 53660, 155808, 151669, 151727, 152092,
|
||||||
152680, 153331, 151699, 152316, 152938, 152289, 152433, 153384,
|
152680, 153331, 151699, 152316, 152938, 152289, 152433, 153384,
|
||||||
151781, 153137, 153259, 152175, 153213, 152291, 151869, 152691,
|
151781, 153137, 153259, 152175, 153213, 152291, 151869, 152691,
|
||||||
152489, 151941, 152049, 152034, 153053, 152179, 153160, 151676,
|
152489, 151941, 152049, 152034, 153053, 152179, 153160, 151676,
|
||||||
153367, 151670, 198, 268, 4123, 480, 155821, 151669, 152350,
|
153367, 151670, 198, 268, 4123, 480, 155821, 151669, 152350,
|
||||||
152173, 152536, 151991, 151960, 153144, 153013, 152358, 152234,
|
152173, 152536, 151991, 151960, 153144, 153013, 152358, 152234,
|
||||||
153135, 152291, 153235, 152143, 152583, 152402, 153483, 152678,
|
153135, 152291, 153235, 152143, 152583, 152402, 153483, 152678,
|
||||||
152192, 152533, 152946, 151797, 153103, 152310, 152293, 151825,
|
152192, 152533, 152946, 151797, 153103, 152310, 152293, 151825,
|
||||||
152548, 153442, 152109, 152659, 153325, 152781, 152570, 152957,
|
152548, 153442, 152109, 152659, 153325, 152781, 152570, 152957,
|
||||||
151752, 152265, 153381, 152515, 151670, 198, 437, 155787,
|
151752, 152265, 153381, 152515, 151670, 198, 437, 155787,
|
||||||
151669, 152957, 152659, 151975, 152709, 152402, 152836, 152174,
|
151669, 152957, 152659, 151975, 152709, 152402, 152836, 152174,
|
||||||
151792, 153409, 153327, 152990, 151670, 198, 275, 155781,
|
151792, 153409, 153327, 152990, 151670, 198, 275, 155781,
|
||||||
151669, 152520, 153038, 152067, 153273, 153185, 152265, 152974,
|
151669, 152520, 153038, 152067, 153273, 153185, 152265, 152974,
|
||||||
151670, 198, 94273, 155799, 151669, 152953, 152938, 153427,
|
151670, 198, 94273, 155799, 151669, 152953, 152938, 153427,
|
||||||
152244, 151920, 153423, 152929, 152367, 153052, 152129, 152331,
|
152244, 151920, 153423, 152929, 152367, 153052, 152129, 152331,
|
||||||
152257, 152987, 152777, 153448, 152408, 151696, 152408, 152326,
|
152257, 152987, 152777, 153448, 152408, 151696, 152408, 152326,
|
||||||
152699, 151670, 198, 385, 16239, 155828, 151669, 152306, 152268,
|
152699, 151670, 198, 385, 16239, 155828, 151669, 152306, 152268,
|
||||||
153438, 153228, 152978, 152957, 153153, 153393, 152795, 152110,
|
153438, 153228, 152978, 152957, 153153, 153393, 152795, 152110,
|
||||||
152918, 152923, 152467, 152331, 153053, 153330, 151889, 153444,
|
152918, 152923, 152467, 152331, 153053, 153330, 151889, 153444,
|
||||||
152234, 152624, 151779, 152801, 152784, 152139, 152222, 152751,
|
152234, 152624, 151779, 152801, 152784, 152139, 152222, 152751,
|
||||||
152512, 153287, 153141, 153052, 151840, 152589, 152508, 153499,
|
152512, 153287, 153141, 153052, 151840, 152589, 152508, 153499,
|
||||||
152109, 152255, 151739, 152267, 152759, 153318, 153165, 153349,
|
152109, 152255, 151739, 152267, 152759, 153318, 153165, 153349,
|
||||||
151670,});
|
151670,});
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// print the prompt token-by-token
|
// print the prompt token-by-token
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user