forked from audiofilter/openBliSSART
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
199 lines (157 loc) · 8.67 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
Modified to use Ubuntu 22.04 using https://github.com/sildeag/poco built with cmake, SDL2 and SDL2_sound.
Dependencies required are libsvm (version 3.25 is used), doxygen, pdflatex, fft3w, and possibly others. Qt6.3.0
Qt5 has been added but is broken at moment, supporting Qt6 and Qt5 means CMake requires extra 'c' as both are turned OFF by default, and CUDA 11.6 not tested and not used. CUDA stills generates linker errors. SDL2 is implemented not SDL1.
Qt Creator used to debug and .pro files were being worked on. CMake build causes errors on Windows 10/11 not completely worked through.
CMake build added. Foreach macro being replaced as this was causing many failures.
Poco changes (merge request with pocoproject not accepted at present):
--------------------------------------------------------------------------------------------
Futher changes were made to Poco/Format.h and Poco/Any.h since they created compile issues for Ubuntu.
Otherwise:
Data/include/Poco/Data/binding.h
inline AbstractBinding::Ptr use(T& t, const std::string& name = "")
{
// If this fails to compile, a const ref was passed to use().
// This can be resolved by either (a) using bind (which will copy the value),
// or (b) if the const ref is guaranteed to exist when execute is called
// (which can be much later!), by using the "useRef" keyword instead
- poco_static_assert (!IsConst<T>::VALUE);
+ //poco_static_assert (!IsConst<T>::VALUE); remove line
return new Binding<T>(t, name, AbstractBinding::PD_IN);
}
Data/include/Poco/Data/TypeHandler.h
private:
template <class T>
class TypeHandler<Poco::AutoPtr<T>>: public AbstractTypeHandler
/// Specialization of type handler for Poco::AutoPtr
{
public:
+ typedef AutoPtr<T> TPtr; // new code here
+
cmake/FindODBC.cmake
find_path(ODBC_INCLUDE_DIR
${ODBC_ROOT_DIR}/include
${ODBC_ROOT_INCLUDE_DIRS}
PATHS
${PC_ODBC_INCLUDE_DIRS}
/usr/include
+ /usr/local/unixODBC/include
-----------------------------------------------------------------------------------------------
openBliSSART original build uses the following steps:
git clone https://github.com/sildeag/openBliSSART.git
cd openBliSSART
./bootstrap.sh
./configure
make
It still works but has been modified to exclude Cuda ** do not use**
----------------------------------------------------------------------
**Preferred build**
New build:
git clone https://github.com/sildeag/openBliSSART.git
cd openBliSSART
mkdir cmake-build
cd cmake-build
ccmake .. (change build type to 'release' or 'debug' and configure 'c', may have to 'e' and then configure again 'c', and then generate 'g')
make
Note: CMakelists.txt for doc generates html and manual_PDF folder which contains manual.pdf file.
----------------------------------------------------------------------
More than one processor:
make -jn (where n = number of processors, changes ordering of build and
not sure how this affects dependent shared libraries and two passes required to enirely build from source)
browser and many other areas are still being worked on as some memory faults persist in browser - valgrind is being used.
some initialization issues and memory overwrite are being addressed
c++20 used as default
----------------------------------------------------------------------
Documentation is built completely. Some issues with fonts.
----------------------------------------------------------------------
Also I would draw your attention to the following from `INSTALL` files
2.1.1.1 Shared Installation
For this, we will be using the default prefix of /usr/local/blissart and install
the software at this location. Then we will create a corresponding group and set
the necessary access rights.
.. `line removed as it continues from above`
..
$ sudo make install
$ sudo groupadd blissart
$ cd /usr/local/blissart
$ sudo mkdir db etc storage
$ sudo chown -R :blissart .
$ sudo chmod -R g+w db etc storage
What remains is adding the respective users to the group which e.g. can be done
via
$ sudo gpasswd -a <username> blissart
You may have to re-login for the new permissions to take effect.
Note: a lot of code has been added to debug and these are controlled by the files 'etc' folder.
2.1.1.2 User-Specific Installation
Aside from the shared installation which requires superuser privileges,
a user-specific installation is maybe easier to perform. It suffices to specify
an installation prefix within the user's home directory.
Do not use this:
$ ./configure --prefix=${HOME}/blissart
$ make
$ make install
Use:
git clone https://github.com/sildeag/openBliSSART.git
cd openBliSSART
mkdir cmake-build
cd cmake-build
ccmake .. (change build type to 'release' or 'debug' and configure 'c', may have to 'e' and then configure again 'c', and then generate 'g')
make
Current issues:
1. LibLinAlg added virtual destructor default - created undefine memory issue.
2. Converted Poco TimeStamp to string as current implementation prevented database tables for
process and process_param tables from being loaded.
3. Valkyrie (qt6 version) required to resolve memory issues leading to jumps and meory leaks.
4. db created in db folder of openBliSSART, want this to be more flexible.
5. re-use of openBliSSART.db creates some issues.
6. Support for Qt5. (Qt6.3.0 is included in current CMake build)
7. Have implemented libsvm 3.25 and am using svm-toy to explore code changes and to remove some memory issues.
svm-toy app may be moved into testsuite. libsvm has numerous uninitised variables and uses unsafe memory functions causing
issues.
8. Reason for the failure appears to be that the ProcessPtr is not std::vector<Process>. The various tables are completely read into a
vector using Poco and SQLite and while the first time ProcessPtr, appears to work and tables created, subsequent reads fail. ProcessPtr
has therefore been redefined as std::vector<Process> and this affects most of the code. Each element of the vector is a table record.
```
![Image of initial `./browser` screen](https://raw.githubusercontent.com/sildeag/openBliSSART/master/screenshots/Screenshot_from_2018-11-11_19-54-20.png)
![Image of `./browser` screen after `.wav` import](https://raw.githubusercontent.com/sildeag/openBliSSART/master/screenshots/Screenshot_from_2018-11-11_19-56-18.png)
```
Issues:
1. In `openBliSSART/src/browser/DataDescriptorItem.cpp`
`vector<FeaturePtr> features = dbSubsystem().getFeatures(_ddesc->descrID);`
generates a segmentation fault - not certain why but am investigating.
2. `Gtk-Message: GtkDialog mapped without a transient parent.`
suggestion was `GtkWindow instead` when there is no parent.
3. Not all .wav files import and .mp3 files do not work, I am investigating that.
Alternative Qt build process is not fully functional.
1. openBlissart.pro project file as a subdirs project has not been completely implemented
--------------------------------------------------------------------------
openBliSSART is a C++ framework and toolbox that provides "Blind Source
Separation for Audio Recognition Tasks". Its areas of application include
instrument separation (e.g. extraction of drum tracks from popular music),
speech enhancement, and feature extraction. It features various source
separation algorithms, with a strong focus on variants of Non-Negative Matrix
Factorization (NMF).
Besides basic unsupervised source separation, it provides support for component
classification by Support Vector Machines (SVM) using common acoustic features
from speech and music processing. For data set creation a Qt-based GUI is
available. Furthermore, supervised NMF can be performed and used for audio
feature extraction.
openBliSSART is fast: typical real-time factors are in the order of 0.1
(Euclidean NMF) on a state-of-the-art desktop PC.
openBliSSART is free software and licensed under the GNU General Public License
(see the COPYING file).
Detailed installation instructions can be found in the INSTALL file. Make sure
to read it first, as it contains valuable hints for easy installation on many
system configurations.
For a first impression of openBliSSART, you may want to try the drum beat
separation demonstrator which is included in the "demo" directory, along with
installation and usage information.
There is a variety of documentation available in the "doc" directory, including
a tutorial, reference manual, and API documentation. Please consult the file
"doc/README" for details.
If you want to use openBliSSART for your research, please cite the following
paper:
Felix Weninger, Alexander Lehmann, Bjoern Schuller:
"openBliSSART: Design and Evaluation of a Research Toolkit for
Blind Source Separation in Audio Recognition Tasks", to appear in
Proc. International Conference on Acoustics, Speech and Signal Processing
(ICASSP) 2011, IEEE, Prague, Czech Republic, 22.-27.05.2011.