orasanen / alice Goto Github PK
View Code? Open in Web Editor NEWAutomatic LInguistic Unit Count Estimator (ALICE)
Automatic LInguistic Unit Count Estimator (ALICE)
Hello,
I am attempting to install ALICE and have succeeded in installing:
Conda (Miniconda actually on ARM architecture)
CMake
Sox
When I try to create the environment with conda env create -f ALICE_Linux.yml (on Ubuntu), I get the following error:
Solving environment: failed
ResolvePackageNotFound:
I have installed tensor flow 2.12.* as I could not find the older version. Am I correct in assuming that ALICE requires the older version? If so, is it possible to adjust to use a newer version? Or, maybe I simply need to dig more to find the older version...
Thanks, in advance, for your time and consideration.
I tried the tutorial given on GitHub. I am not able to run the demo without error. Running the command ./run_ALICE.sh demo/ROS_5271_20_01_03600_snippet_mono.wav gives the error
"Test set: 0it [00:00, ?it/s]/Users/karthyedath.1/ALICE/voice-type-classifier/apply.sh: line 145: 80104 Segmentation fault: 11 pyannote-audio mlt apply --$DEVICE --batch=$BATCH --subset=test --parallel=8 $VAL_DIR $bn.SpeakerDiarization.All
Something went wrong when applying the model
Aborting".
I am using MacOS
Attaching the error. Could anyone please help me to resolve this issue?
Hello! I was able to install ALICE on my computer, but have been running into issues using ./run_ALICE.sh command with the provided demo file. Below is the error message I got:
(base) C02DD4H0ML7H:ALICE yerangpark$ conda activate ALICE
(ALICE) C02DD4H0ML7H:ALICE yerangpark$ ./run_ALICE.sh demo/ROS_5271_20_01_03600_snippet_mono.wav
Traceback (most recent call last):
File "prepare_data.py", line 29, in
raise Exception('Provided input file list does not exist.')
Exception: Provided input file list does not exist.
ls: /Users/yerangpark/ALICE/tmp_data/*.wav: No such file or directory
The folder you provided doesn't contain any wav files.
Traceback (most recent call last):
File "split_to_utterances.py", line 14, in
with open(curdir + '/output_voice_type_classifier/tmp_data/all.rttm') as csv_file:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/yerangpark/ALICE/output_voice_type_classifier/tmp_data/all.rttm'
getFinalEstimates.py:10: UserWarning: genfromtxt: Empty input file: "/Users/yerangpark/ALICE/tmp_data/features/ALUCs_out_individual.txt"
F = genfromtxt(curdir + "/tmp_data/features/ALUCs_out_individual.txt", delimiter='\t')
cp: /Users/yerangpark/ALICE/output_voice_type_classifier/tmp_data/all.rttm: No such file or directory
ALICE completed. Results written to /Users/yerangpark/ALICE/ALICE_output.txt and /Users/yerangpark/ALICE/diarization_output.rttm.
I've tried running this code with other audio files and still got the same error message. I double-checked that the files were in the ALICE folder, so I'm not sure why the files can't be located. Any help would be greatly appreciated. Thank you!
pyannote-audio
runs with --cpu
flag even if --gpu
is passed to ./run_ALICE.sh
fix:
on ./run_ALICE.sh line 32 should be:
GPU="gpu";
and line 47 should read:
bash $THISDIR/voice-type-classifier/apply.sh $THISDIR/tmp_data/ "MAL FEM" --device=$GPU |& sed '/^Took/d'
--device=gpu argument must be passed instead of --gpu
I think this bug was already in last version since my execution time for a 2 hour audio dropped from 70min to 10min
Small bug:
On line 66, return
should be changed to exit
or an error will raise: ./run_ALICE.sh: line 66: return: can only 'return' from a function or sourced script
This happens with SylNet fails.
Running the demo (on Ubuntu 14.04),
Found wav files.
Creating config for pyannote.
Done creating config for pyannote.
Extracting KCHI
Feature extractors based on "yaafe" are not available because "yaafelib" could not be found.
/home/stephan/miniconda3/envs/ALICE/lib/python3.6/site-packages/pyannote/audio/applications/base.py:87: YAMLLoadWarning: calling yaml.load() without Loader=... is depreca
ted, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
params_yml = yaml.load(fp)
Test set: 1it [00:05, 5.90s/it]
Test set: 1it [00:00, 11.38it/s]
Extracting CHI
Feature extractors based on "yaafe" are not available because "yaafelib" could not be found.
/home/stephan/miniconda3/envs/ALICE/lib/python3.6/site-packages/pyannote/audio/applications/base.py:87: YAMLLoadWarning: calling yaml.load() without Loader=... is depreca
ted, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
params_yml = yaml.load(fp)
Test set: 1it [00:05, 5.99s/it]
Test set: 1it [00:00, 15.03it/s]
Extracting MAL
Feature extractors based on "yaafe" are not available because "yaafelib" could not be found.
/home/stephan/miniconda3/envs/ALICE/lib/python3.6/site-packages/pyannote/audio/applications/base.py:87: YAMLLoadWarning: calling yaml.load() without Loader=... is depreca
ted, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
params_yml = yaml.load(fp)
Test set: 1it [00:05, 5.94s/it]
Test set: 1it [00:00, 16.37it/s]
Extracting FEM
Feature extractors based on "yaafe" are not available because "yaafelib" could not be found.
/home/stephan/miniconda3/envs/ALICE/lib/python3.6/site-packages/pyannote/audio/applications/base.py:87: YAMLLoadWarning: calling yaml.load() without Loader=... is depreca
ted, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
params_yml = yaml.load(fp)
Test set: 1it [00:05, 5.99s/it]
Test set: 1it [00:00, 18.03it/s]
Extracting SPEECH
Feature extractors based on "yaafe" are not available because "yaafelib" could not be found.
/home/stephan/miniconda3/envs/ALICE/lib/python3.6/site-packages/pyannote/audio/applications/base.py:87: YAMLLoadWarning: calling yaml.load() without Loader=... is depreca
ted, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
params_yml = yaml.load(fp)
Test set: 1it [00:05, 5.90s/it]
Test set: 1it [00:00, 17.73it/s]
SylNet completed
Traceback (most recent call last):
File "extract_basic_features.py", line 10, in <module>
with open(curdir + '/tmp_data/features/SylNet_out_files.txt') as csv_file:
FileNotFoundError: [Errno 2] No such file or directory: '/home/stephan/notebooks/ALICE/tmp_data/features/SylNet_out_files.txt'
paste: /home/stephan/notebooks/ALICE/tmp_data/features/SylNet_out.txt: No such file or directory
regress_ALUCs.py:10: UserWarning: genfromtxt: Empty input file: "/home/stephan/notebooks/ALICE/tmp_data/features/final_feats.txt"
F = genfromtxt(curdir + "/tmp_data/features/final_feats.txt", delimiter='\t')
Traceback (most recent call last):
File "regress_ALUCs.py", line 25, in <module>
words_est = np.dot(F,X_words)
File "<__array_function__ internals>", line 6, in dot
ValueError: shapes (0,2) and (5,) not aligned: 2 (dim 1) != 5 (dim 0)
paste: /home/stephan/notebooks/ALICE/tmp_data/features/SylNet_out_files.txt: No such file or directory
rm: cannot remove '/home/stephan/notebooks/ALICE/tmp_data/features/ALUCs_out_individual_tmp.txt': No such file or directory
getFinalEstimates.py:10: UserWarning: genfromtxt: Empty input file: "/home/stephan/notebooks/ALICE/tmp_data/features/ALUCs_out_individual.txt"
F = genfromtxt(curdir + "/tmp_data/features/ALUCs_out_individual.txt", delimiter='\t')
ALICE completed. Results written to /home/stephan/notebooks/ALICE/ALICE_output.txt and /home/stephan/notebooks/ALICE/diarization_output.rttm.```
minor bug,
when running:
sh run_ALICE.sh <data_location>
If data_location is a directory and it doesn't have a trailing slash (a / at the end of path) it won't find any files.
sh run_ALICE.sh demo/
works, but
sh run_ALICE.sh demo
doesn't
$ sh run_ALICE.sh demo/
run_ALICE.sh: line 52: syntax error near unexpected token `&'
run_ALICE.sh: line 52: `bash $THISDIR/voice-type-classifier/apply.sh $THISDIR/tmp_data/ "MAL FEM" $GPU |& sed '/^Took/d''
I have a question regarding ALICE pipeline.
Line 43 and 44 of run_ALICE.sh reads:
# Run SAD on the files
python3 prepare_data.py $THISDIR $DATADIR/
But after reading prepare_data.py it doesn't look as if it is running any SAD related task.
am I missing something ? does voice-type-classifier run SAD ? it is non mandatory to run SAD before voice-type-classifier ?
Reading the code in voice-type-classifier/apply.sh it runs pyannote-audio with mlt parameter which doesn't seem to be running SAD either.
Best regards,
Leandro Garber
This needs to be fixed.
It would be nice to output utterance-level counts as well to enable analysis of different sections of a longer file. This information is currently produced as an intermediate result in tmp_data/features/ALUCs_out_individual_tmp.txt and deleted on cleanup. Fix this.
I sometimes run into issues such as the following. I don't really understand why as upon listening to the file everything looks normal and the VTC & VCM work perfectly on it.
Traceback (most recent call last):
File "/scratch2/whavard/PACKAGES/ALICE/SylNet/run_SylNet.py", line 104, in <module>
X[i] = np.transpose(20*np.log10(librosa.feature.melspectrogram(y=y, sr=Fs, n_mels=24, n_fft=w_l, hop_length=w_h)))
File "/scratch2/whavard/.conda/envs/ALICE/lib/python3.6/site-packages/librosa/feature/spectral.py", line 2004, in melspectrogram
pad_mode=pad_mode,
File "/scratch2/whavard/.conda/envs/ALICE/lib/python.6/site-packages/librosa/core/spectrum.py", line 2519, in _spectrogram
pad_mode=pad_mode,
File "/scratch2/whavard/.conda/envs/ALICE/lib/python3.6/site-packages/librosa/core/spectrum.py", line 217, in stft
util.valid_audio(y)
File "/scratch2/whavard/.conda/envs/ALICE/lib/python3.6/site-packages/librosa/util/utils.py", line 310, in valid_audio
raise ParameterError("Audio buffer is not finite everywhere")
librosa.util.exceptions.ParameterError: Audio buffer is not finite everywhere
From README:
Timestamps appended to the filenames are of form <onset_time_in_ms x 10> _ <offset_time_in_ms x 10>, as measured from the beginning of each audio file. For instance, _00062740_00096150.wav stands for an utterance in <filename.wav> that started at 6.274 seconds and ended at 9.615 seconds.
So the examples have a millisecond accuracy, but are stored as tenths of milliseconds integers -- does this come from e.g. annotation in ELAN? Is it ideal to keep notations with tenths of ms precision, or can ms precision do?
Hello,
I have a question regarding the wave file format. When I ran audio files collected through LENA devices, there wasn't any problems related to wave file format. However, when I tried to run audio files collected through other USB recorders (recorder 1 and recorder 2), I was not able to get any outputs and got the error message below. Is there any specific file format requirements for using ALICE?
ValueError: Unknown wave file format getFinalEstimates.py:10: UserWarning: genfromtxt: Empty input file: "/Users/yerangpark/ALICE/tmp_data/features/ALUCs_out_individual.txt" F = genfromtxt(curdir + "/tmp_data/features/ALUCs_out_individual.txt", delimiter='\t') ALICE completed. Results written to /Users/yerangpark/ALICE/ALICE_output.txt and /Users/yerangpark/ALICE/diarization_output.rttm.)
Because it uses Tensorflow 1.10.1, this requires CUDA 9.0. In the ALICE.yml it just specifies cudatoolkit, which is fine for MacOS because that is still the main version, but not for Linux. https://anaconda.org/anaconda/cudatoolkit
Should be safe to put cudatoolkit=9.0 in the ALICE.yml.
Edited: Only CUDA 9.0 will work with Tensorflow 1.10.1.
Dear authors,
I've tried to build ALICE on Windows with Anaconda3 environment, but failed with a following message.
Best regards,
Daniil Kocharov
Collecting package metadata (repodata.json): done
Solving environment: failed
ResolvePackageNotFound:
Using Ubuntu through WSL 2 on Windows Build 19041.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
active environment : ALICE
active env location : /home/craig/miniconda3/envs/ALICE
shell level : 2
user config file : /home/craig/.condarc
populated config files :
conda version : 4.8.2
conda-build version : 3.18.11
python version : 3.7.6.final.0
virtual packages : __glibc=2.27
base environment : /home/craig/miniconda3 (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /home/craig/miniconda3/pkgs
/home/craig/.conda/pkgs
envs directories : /home/craig/miniconda3/envs
/home/craig/.conda/envs
platform : linux-64
user-agent : conda/4.8.2 requests/2.22.0 CPython/3.7.6 Linux/4.19.84-microsoft-standard ubuntu/18.04.2 glibc/2.27
UID:GID : 1000:1000
netrc file : None
offline mode : False
SylNet works for each it, going through each feature extractor of CHI, MAL, KCHI, FEM, SPEECH, but when it is complete, this error occurs. Seems to be an error pointing to /tmp_data/features/SylNet_out_files.txt'. Could be specifically due to using WSL 2 and the PATH, but I'm not sure. Diarization output looks correct but no counts are given. Error 2 is probably related, as it couldn't find the out_files.
SylNet completed
Traceback (most recent call last):
File "extract_basic_features.py", line 10, in <module>
with open(curdir + '/tmp_data/features/SylNet_out_files.txt') as csv_file:
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/c/Users/Craig/ALICE/tmp_data/features/SylNet_out_files.txt'
paste: /mnt/c/Users/Craig/ALICE/tmp_data/features/SylNet_out.txt: No such file or directory
regress_ALUCs.py:10: UserWarning: genfromtxt: Empty input file: "/mnt/c/Users/Craig/ALICE/tmp_data/features/final_feats.txt"
F = genfromtxt(curdir + "/tmp_data/features/final_feats.txt", delimiter='\t')
Traceback (most recent call last):
File "regress_ALUCs.py", line 20, in <module>
words_est = np.dot(F,X_words)
File "<__array_function__ internals>", line 6, in dot
ValueError: shapes (0,2) and (5,) not aligned: 2 (dim 1) != 5 (dim 0)
paste: /mnt/c/Users/Craig/ALICE/tmp_data/features/SylNet_out_files.txt: No such file or directory
rm: cannot remove '/mnt/c/Users/Craig/ALICE/tmp_data/features/ALUCs_out_individual_tmp.txt': No such file or directory getFinalEstimates.py:10: UserWarning: genfromtxt: Empty input file: "/mnt/c/Users/Craig/ALICE/tmp_data/features/ALUCs_out_individual.txt"
F = genfromtxt(curdir + "/tmp_data/features/ALUCs_out_individual.txt", delimiter='\t')
ALICE completed. Results written to /mnt/c/Users/Craig/ALICE/ALICE_output.txt and /mnt/c/Users/Craig/ALICE/diarization_output.rttm.
/home/craig/miniconda3/envs/ALICE/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:523: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/craig/miniconda3/envs/ALICE/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:524: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/craig/miniconda3/envs/ALICE/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/craig/miniconda3/envs/ALICE/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/craig/miniconda3/envs/ALICE/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:527: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/home/craig/miniconda3/envs/ALICE/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:532: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
Traceback (most recent call last):
File "/mnt/c/Users/Craig/ALICE/SylNet/run_SylNet.py", line 86, in <module>
raise Exception('Provided input file list does not exist.')
Exception: Provided input file list does not exist.
# packages in environment at /home/craig/miniconda3/envs/ALICE:
#
# Name Version Build Channel
_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 1_llvm conda-forge
absl-py 0.8.1 py36_0 conda-forge
alembic 1.3.3 pypi_0 pypi
astor 0.8.0 py36_0
audioread 2.1.8 pypi_0 pypi
blas 1.0 mkl conda-forge
c-ares 1.15.0 h516909a_1001 conda-forge
ca-certificates 2020.1.1 0
cachetools 4.0.0 pypi_0 pypi
certifi 2019.11.28 py36_0 conda-forge
cffi 1.13.2 pypi_0 pypi
cliff 2.18.0 pypi_0 pypi
cmd2 0.8.9 pypi_0 pypi
colorlog 4.1.0 pypi_0 pypi
cudatoolkit 10.2.89 hfd86e86_0
cycler 0.10.0 pypi_0 pypi
dataclasses 0.7 pypi_0 pypi
decorator 4.4.1 pypi_0 pypi
dlib 19.19.0 pypi_0 pypi
docopt 0.6.2 pypi_0 pypi
filelock 3.0.12 pypi_0 pypi
gast 0.2.2 py_0 conda-forge
google-pasta 0.1.8 py_0 conda-forge
grpcio 1.16.1 py36hf8bcb03_1
h5py 2.10.0 py36h7918eee_0
hdf5 1.10.4 nompi_h3c11f04_1106 conda-forge
joblib 0.14.1 pypi_0 pypi
keras-applications 1.0.8 py_1 conda-forge
keras-preprocessing 1.1.0 py_0 conda-forge
kiwisolver 1.1.0 pypi_0 pypi
lame 3.100 h14c3975_1001 conda-forge
libblas 3.8.0 15_mkl conda-forge
libcblas 3.8.0 15_mkl conda-forge
libffi 3.2.1 he1b5a44_1006 conda-forge
libgcc-ng 9.2.0 h24d8f2e_2 conda-forge
libgfortran-ng 7.3.0 hdf63c60_5 conda-forge
liblapack 3.8.0 15_mkl conda-forge
libopenblas 0.3.7 h5ec1e0e_7 conda-forge
libpng 1.6.37 hed695b0_0 conda-forge
libprotobuf 3.11.2 h8b12597_0 conda-forge
librosa 0.7.2 pypi_0 pypi
libstdcxx-ng 9.2.0 hdf63c60_2 conda-forge
llvm-openmp 9.0.1 hc9558a2_2 conda-forge
llvmlite 0.31.0 pypi_0 pypi
mad 0.15.1b he1b5a44_0 conda-forge
mako 1.1.1 pypi_0 pypi
markdown 3.1.1 py_0 conda-forge
markupsafe 1.1.1 pypi_0 pypi
matplotlib 3.1.2 pypi_0 pypi
mkl 2020.0 166 conda-forge
mpmath 1.1.0 pypi_0 pypi
munkres 1.1.2 pypi_0 pypi
ncurses 6.1 hf484d3e_1002 conda-forge
networkx 2.4 pypi_0 pypi
numba 0.48.0 pypi_0 pypi
numpy 1.17.5 py36h95a1406_0 conda-forge
openssl 1.1.1d h516909a_0 conda-forge
opt_einsum 3.1.0 py_0 conda-forge
optuna 1.0.0 pypi_0 pypi
pandas 1.0.0 py36hb3f55d8_0 conda-forge
pbr 5.4.4 pypi_0 pypi
pip 20.0.2 py_2 conda-forge
prettytable 0.7.2 pypi_0 pypi
protobuf 3.11.2 pypi_0 pypi
pyannote-audio 0+unknown pypi_0 pypi
pyannote-core 3.2 pypi_0 pypi
pyannote-database 2.3.1 pypi_0 pypi
pyannote-generators 2.0 pypi_0 pypi
pyannote-metrics 2.0.2 pypi_0 pypi
pyannote-pipeline 1.2 pypi_0 pypi
pycparser 2.19 pypi_0 pypi
pyparsing 2.4.6 pypi_0 pypi
pyperclip 1.7.0 pypi_0 pypi
python 3.6.7 h357f687_1006 conda-forge
python-dateutil 2.8.1 py_0 conda-forge
python-editor 1.0.4 pypi_0 pypi
python-speech-features 0.6 pypi_0 pypi
pytz 2019.3 py_0 conda-forge
pyyaml 5.3 pypi_0 pypi
readline 8.0 hf8c457e_0 conda-forge
resampy 0.2.2 pypi_0 pypi
scikit-learn 0.22.1 pypi_0 pypi
scipy 1.4.1 py36h921218d_0 conda-forge
setuptools 45.1.0 py36_0 conda-forge
simplejson 3.17.0 pypi_0 pypi
six 1.14.0 py36_0 conda-forge
sortedcollections 1.1.2 pypi_0 pypi
sortedcontainers 2.1.0 pypi_0 pypi
soundfile 0.10.3.post1 pypi_0 pypi
sox 14.4.2 h27f72bc_1013 conda-forge
sqlalchemy 1.3.13 pypi_0 pypi
sqlite 3.30.1 hcee41ef_0 conda-forge
stevedore 1.31.0 pypi_0 pypi
sympy 1.5.1 pypi_0 pypi
tabulate 0.8.6 pypi_0 pypi
tensorboard 1.10.0 pypi_0 pypi
tensorboardx 2.0 pypi_0 pypi
tensorflow 1.10.1 pypi_0 pypi
termcolor 1.1.0 py_2 conda-forge
tk 8.6.10 hed695b0_0 conda-forge
torch 1.4.0 pypi_0 pypi
tqdm 4.42.0 pypi_0 pypi
typing 3.7.4.1 pypi_0 pypi
typing-extensions 3.7.4.1 pypi_0 pypi
wcwidth 0.1.8 pypi_0 pypi
webencodings 0.5.1 py_1 conda-forge
werkzeug 0.16.1 py_0 conda-forge
wheel 0.34.1 py36_0 conda-forge
wrapt 1.11.2 py36h516909a_0 conda-forge
xarray 0.11.0 pypi_0 pypi
xz 5.2.4 h14c3975_1001 conda-forge
zlib 1.2.11 h516909a_1006 conda-forge
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.