13 bool shouldSave =
true;
17 std::map<String, std::vector<float>> fileNameEmbeddingsMap;
18 if (pathToEmbeddingsFile.existsAsFile())
20 fileNameEmbeddingsMap =
readFromFile(pathToEmbeddingsFile);
24 std::set<std::string> filenames;
25 std::size_t count = 0;
27 for (
const auto& path : File(root).findChildFiles(2,
true,
"*.wav"))
29 if (threadShouldExit())
32 auto basename = path.getFileName().toStdString();
35 if (filenames.count(basename) == 0)
37 auto fullPathName = path.getFullPathName();
40 std::vector<float> embedding;
41 if (fileNameEmbeddingsMap.count(fullPathName) > 0)
43 embedding = fileNameEmbeddingsMap[fullPathName];
47 auto query = path.getFileNameWithoutExtension();
48 auto catID = query.upToFirstOccurrenceOf(
"_",
false,
false);
49 if (catID ==
"FOLEYFeet")
51 auto valid =
m_UCS->isValid(catID);
55 auto category =
m_UCS->getCategorySubCategory(catID);
56 query = query.replace(catID, category);
57 query = query.replaceCharacters(
"_",
" ");
60 fileNameEmbeddingsMap[fullPathName] = embedding;
67 filenames.insert(basename);
75 auto success =
saveToFile(pathToEmbeddingsFile, fileNameEmbeddingsMap);
87 std::vector<File> results;
91 const String excludeOperator =
"NOT";
92 if (query.containsWholeWord(excludeOperator))
94 auto exclude = query.fromFirstOccurrenceOf(excludeOperator,
false,
false).trim();
95 StringArray excludeTokens;
96 excludeTokens.addTokens(exclude,
" ", StringRef(
""));
98 query = query.upToFirstOccurrenceOf(excludeOperator,
false,
false);
103 for (
const auto& index : indices)
105 auto text =
m_files[index].getFileNameWithoutExtension().replaceCharacters(
"_",
" ");
106 bool shouldFilter =
false;
107 for (
const auto& token : excludeTokens)
109 shouldFilter = text.containsWholeWordIgnoreCase(token) ? true : shouldFilter;
113 results.push_back(
m_files[index]);
114 if (results.size() == k)
124 for (
const auto& index : indices)
126 results.push_back(
m_files[index]);
static File getPluginDirectory()
Definition AssetManager.cpp:392
static String readFactorySamplesPath()
Definition AssetManager.cpp:112
void buildIndex()
Definition KDTreeND.cpp:6
std::vector< std::size_t > knnQuery(const std::vector< float > &x, std::size_t k) const
Definition KDTreeND.cpp:18
void addDatasetItem(const std::vector< float > &x)
Definition KDTreeND.cpp:4
void run() override
Definition TextToFile.cpp:11
bool saveToFile(File file, const std::map< String, std::vector< float > > &data)
Definition TextToFile.h:20
std::vector< File > m_files
Definition TextToFile.h:81
TextToFile()
Definition TextToFile.cpp:4
KDTreeND m_tree
Definition TextToFile.h:80
std::map< String, std::vector< float > > readFromFile(File file)
Definition TextToFile.h:56
SharedResourcePointer< UniversalCategorySystem > m_UCS
Definition TextToFile.h:82
SentenceTransformer m_sentenceTransformer
Definition TextToFile.h:79
File embeddingsFilePath(String filename) const
Definition TextToFile.cpp:132
~TextToFile()
Definition TextToFile.cpp:9
std::vector< File > search(String query, std::size_t k=25)
Definition TextToFile.cpp:85
String StringsIntoPath(Args... args)
Joins multiple string arguments into a path string.
Definition helpers.h:25
Definition AirAbsorptionFilter.cpp:2
constexpr char textToFileEmbeddingsFilename[]
Definition TextToFile.h:7