Giter Club home page Giter Club logo

fac-via-ppg's Introduction

Foreign Accent Conversion by Synthesizing Speech from Phonetic Posteriorgrams

This repository hosts the code we used to prepare our interspeech'19 paper titled "Foreign Accent Conversion by Synthesizing Speech from Phonetic Posteriorgrams"

Install

This project uses conda to manage all the dependencies, you should install anaconda if you have not done so.

# Clone the repo
git clone https://github.com/guanlongzhao/fac-via-ppg.git
cd $PROJECT_ROOT_DIR

# Install dependencies
conda env create -f environment.yml

# Activate the installed environment
conda activate ppg-speech

# Compile protocol buffer to get the data_utterance_pb2.py file
protoc -I=src/common --python_out=src/common src/common/data_utterance.proto

# Include src in your PYTHONPATH
export PYTHONPATH=$PROJECT_ROOT_DIR/src:$PYTHONPATH

If conda complains that some packages are missing, it is very likely that you can find a similar version of that package on anaconda's archive.

If you are using pytorch >= 1.3, you may need to remove the byte() method call in src.common.utils.get_mask_from_lengths.

Run unit tests

cd test

# Remember to make this script executable
./run_coverage.sh

This only does a few sanity checks, don't worry if the test coverage looks low :)

Depending on your git configs, you may or may not need to recreate the symbolic links in test/data.

Train PPG-to-Mel model

Change default parameters in src/common/hparams.py:create_hparams(). The training and validation data should be specified in text files, see data/filelists for examples.

cd src/script
python train_ppg2mel.py

The FP16 mode will not work, unfortunately :(

Train WaveGlow model

Change the default parameters in src/waveglow/config.json. The training data should be specified in the same manner as the PPG-to-Mel model.

cd src/script
python train_waveglow.py

View training progress

You should find a dir log in all of your output dirs, that is the LOG_DIR you should use below.

tensorboard --logdir=${LOG_DIR}

Generate speech synthesis

Use src/script/generate_synthesis.py, you can find pre-trained models in the Links section.

generate_synthesis.py [-h] --ppg2mel_model PPG2MEL_MODEL
                           --waveglow_model WAVEGLOW_MODEL
                           --teacher_utterance_path TEACHER_UTTERANCE_PATH
                           --output_dir OUTPUT_DIR

Links

Citation

Please kindly cite the following paper if you use this code repository in your work,

@inproceedings{zhao2019ForeignAC,
  author={Guanlong Zhao and Shaojin Ding and Ricardo Gutierrez-Osuna},
  title={{Foreign Accent Conversion by Synthesizing Speech from Phonetic Posteriorgrams}},
  year=2019,
  booktitle={Proc. Interspeech 2019},
  pages={2843--2847},
  doi={10.21437/Interspeech.2019-1778},
  url={http://dx.doi.org/10.21437/Interspeech.2019-1778}
}

fac-via-ppg's People

Contributors

a2d8a4v avatar guanlongzhao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

fac-via-ppg's Issues

trainning is too slow

hi, guanlong.
Could you tell me how long it costs per iteration in your trainning?
I think there's some mistake when I run your script 'python train_ppg2mel.py'.
image

LDA reducre matrix transform

Hi,
First of all, thank you for this exciting work, and thanks for sharing it on GitHub.

I am trying to reproduce your work but in a different language, French instead of English.

I wonder how you got the LDA.mat of '40X91', but in my case, the LDA matrix is "40X281"?

Thanks a lot

Question about model application

Hi!
Wonderful project!
I would like to know, if it is possible to apply proposed approach for voice morphing?
For example, to train model on young and old voices and create age morphing system?
I still can't figure out why it won't work but maybe some reasons exist :)
Thanks!

TypeError: Cannot handle this data type:(1,1,400),u1

Hi!
When i ran the code, l met the following error: TypeError: Cannot handle this data type:(1,1,400),u1。
I gussed it maybe related with PIL. When i comment out "logger.log_validation(val_loss, model, y, y_pred, iteration)", everything is right.
Did you meet the same situation or whelther it would have other influence?

Model trained with i-vectors can not be used

Hi, I encounter a problem when using the compute_full_ppg function at src/ppg/compute_ppg.py
I used librispeech to train an acoustic model with i-vectors, and I write my code like these below:

def feats_scp_reader(path,name): p = path+"/"+name+".scp" rtn = {} with ReadHelper('scp:{}'.format(p)) as reader: for key, numpy_array in reader: rtn[key] = numpy_array return rtn
...
feats=feats_scp_reader(base+"/data/test","feats")
...
for i,(j,k) in enumerate(feats.items()): print(j) nnet = decode.read_nnet3_model(base+"/path/to/own/model/final.raw") ppg = compute_full_ppg(nnet,Matrix( k )).numpy() ...

and the code went wrong with this line:
ppg = compute_full_ppg(nnet,Matrix( k )).numpy()

the error message is just like below
LOG ([5.5.195~1-9daa6]:RemoveOrphanNodes():nnet-nnet.cc:948) Removed 5 orphan nodes. LOG ([5.5.195~1-9daa6]:RemoveOrphanComponents():nnet-nnet.cc:847) Removing 11 orphan components. LOG ([5.5.195~1-9daa6]:Collapse():nnet-utils.cc:1378) Added 6 components, removed 11 ERROR ([5.5.195~1-9daa6]:EnsureFrameIsComputed():nnet-am-decodable-simple.cc:105) Neural net expects 'ivector' features with dimension 100 but you provided 0 ERROR ([5.5.195~1-9daa6]:EnsureFrameIsComputed():nnet-am-decodable-simple.cc:105) Neural net expects 'ivector' features with dimension 100 but you provided 0 Traceback (most recent call last): File "kaldi_load_feats.py", line 56, in <module> ppg = compute_full_ppg(nnet,Matrix( k )).numpy() File "xxx/fac-via-ppg/src/ppg/compute_ppg.py", line 68, in compute_full_ppg nnet_computer.get_output_for_frame(i, temp) RuntimeError: C++ exception:

Is it possible to use models trained with i-vectors with the compute_ppg function? or any other way to solve this kind of problem.

peace

Dot indexing is not supported for variables of this type.

I am facing dot indexing problem in generation of ark files in post whenever i am runnning the preparefixturefortest.
please tell me the reason behind?

********** Preparing Posteriorgram Files **********
Extracting PPGs:
./data_prep.sh --n_split 1 /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/recording /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post
utils/validate_data_dir.sh: WARNING: you have only one speaker. This probably a bad idea.
Search for the word 'bold' in http://kaldi-asr.org/doc/data_prep.html
for more information.
utils/validate_data_dir.sh: Successfully validated data-directory /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post
steps/make_mfcc.sh --cmd utils/run.pl --mfcc-config ./conf/mfcc.conf --nj 8 --write-utt2num-frames true /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1/ /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/make_mfcc_log/1 /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/mfcc/1
steps/make_mfcc.sh: moving /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1//feats.scp to /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1//.backup
utils/validate_data_dir.sh: WARNING: you have only one speaker. This probably a bad idea.
Search for the word 'bold' in http://kaldi-asr.org/doc/data_prep.html
for more information.
utils/validate_data_dir.sh: Successfully validated data-directory /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1/
steps/make_mfcc.sh: [info]: no segments file exists: assuming wav.scp indexed by utterance.
Succeeded creating MFCC features for 1
steps/compute_cmvn_stats.sh /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1/ /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/make_mfcc_log/1 /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/mfcc/1
Succeeded creating CMVN stats for 1
./make_posteriors.sh --nj 8 /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1 /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1/post ./exp/nnet7a_960_gpu /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1/post /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/dump_post_log/1
./make_posteriors.sh: feature type is lda
Making Posterior scp and ark.
./make_posteriors.sh: computing CMVN stats.
steps/compute_cmvn_stats.sh /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1/post /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/dump_post_log/1 /home/sneha/my_proj/proj-ppggmm/ppg-gmm/test/data/src/cache/post/split1utt/1/post
Succeeded creating CMVN stats for post
./make_posteriors.sh: done making BNF feats.scp.
/home/sneha/my_proj/proj-ppggmm/ppg-gmm/dependency/mcep-sptk-matlab
Finished PPG extraction.
Loading ark files...
done
**Dot indexing is not supported for variables of this type.

Error in fixPpgLengthMismatch (line 50)
numFeatFrames = size(utt.mfcc, 2);

Error in dataPrep (line 350)
outputBuffer{iUtt} = fixPpgLengthMismatch(outputBuffer{iUtt},
temppost);

Error in prepareFixturesForTests (line 31)
matList = dataPrep(wavList, transFile, fullfile(rootDir, 'src/cache'),...**

Inference - where to specify non-native speaker audio

@guanlongzhao Thanks a lot for the great job and sharing your code. I am trying to use your code to reduce accented speech, but I am struggling to find a place where I should specify the non-native speaker utterance, I see only teacher utterance path. Shouldn't it work in a way that you specify both of them? Thanks in advance.

Failed to use model trained with i-vectors when computing ppg

Hi, I encounter a problem when using the compute_full_ppg function at src/ppg/compute_ppg.py
I used librispeech to train an acoustic model with i-vectors, and I write my code like these below:

def feats_scp_reader(path,name):
p = path+"/"+name+".scp"
rtn = {}
with ReadHelper('scp:{}'.format(p)) as reader:
for key, numpy_array in reader:
rtn[key] = numpy_array
return rtn
...
feats=feats_scp_reader(base+"/data/test","feats")
...
for i,(j,k) in enumerate(feats.items()): print(j) nnet = decode.read_nnet3_model(base+"/path/to/own/model/final.raw") ppg = compute_full_ppg(nnet,Matrix( k )).numpy() ...

and the code went wrong with this line:
ppg = compute_full_ppg(nnet,Matrix( k )).numpy()

the error message is just like below
LOG ([5.5.195~1-9daa6]:RemoveOrphanNodes():nnet-nnet.cc:948) Removed 5 orphan nodes.
LOG ([5.5.195~1-9daa6]:RemoveOrphanComponents():nnet-nnet.cc:847) Removing 11 orphan components.
LOG ([5.5.195~1-9daa6]:Collapse():nnet-utils.cc:1378) Added 6 components, removed 11
ERROR ([5.5.195~1-9daa6]:EnsureFrameIsComputed():nnet-am-decodable-simple.cc:105) Neural net expects 'ivector' features with dimension 100 but you provided 0
ERROR ([5.5.195~1-9daa6]:EnsureFrameIsComputed():nnet-am-decodable-simple.cc:105) Neural net expects 'ivector' features with dimension 100 but you provided 0
Traceback (most recent call last):
File "kaldi_load_feats.py", line 56, in <module>
ppg = compute_full_ppg(nnet,Matrix( k )).numpy()
File "xxx/fac-via-ppg/src/ppg/compute_ppg.py", line 68, in compute_full_ppg
nnet_computer.get_output_for_frame(i, temp)
RuntimeError: C++ exception:

Is it possible to use models trained with i-vectors with the compute_ppg function? or any other way to solve this kind of problem.

peace

TTS training from the PPG

I am trying to train the Tacotron model with the provided code but it does not seem to be working at all. The model fails to learn anything from the input features and the dataset provided by the authors. Here is how my training and validation loss looks like even after 1000 epochs.
train_loss
valid_loss

I am merely trying to reproduce the work here and have not made any changes to the code.

about kaldi question

when i train your model, i met this question like this undefined symbol:_ZN5kaldi25g_abort_on_assert_failureE
I think may be my version had some question, but I have no idea about this could you help me

nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module

Hi, I am trying to follow the instruction on google colab however with this "./run_coverage.sh" I am getting the following error:

nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module
EEEEE

ERROR: Failure: SyntaxError (invalid syntax (decode.py, line 23))

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/content/fac-via-ppg/test/test_align.py", line 16, in
from common import align
File "/content/fac-via-ppg/src/common/init.py", line 1, in
from .decode import *
File "/content/fac-via-ppg/src/common/decode.py", line 23
def read_nnet3_model(model_path: str) -> nnet3.Nnet:
^
SyntaxError: invalid syntax

======================================================================
ERROR: Failure: SyntaxError (invalid syntax (decode.py, line 23))

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/content/fac-via-ppg/test/test_decode.py", line 16, in
from common import decode
File "/content/fac-via-ppg/src/common/init.py", line 1, in
from .decode import *
File "/content/fac-via-ppg/src/common/decode.py", line 23
def read_nnet3_model(model_path: str) -> nnet3.Nnet:
^
SyntaxError: invalid syntax

======================================================================
ERROR: Failure: SyntaxError (invalid syntax (decode.py, line 23))

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/content/fac-via-ppg/test/test_feat.py", line 16, in
from common import feat
File "/content/fac-via-ppg/src/common/init.py", line 1, in
from .decode import *
File "/content/fac-via-ppg/src/common/decode.py", line 23
def read_nnet3_model(model_path: str) -> nnet3.Nnet:
^
SyntaxError: invalid syntax

======================================================================
ERROR: Failure: SyntaxError (invalid syntax (compute_ppg.py, line 42))

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/content/fac-via-ppg/test/test_ppg.py", line 16, in
import ppg
File "/content/fac-via-ppg/src/ppg/init.py", line 1, in
from .compute_ppg import *
File "/content/fac-via-ppg/src/ppg/compute_ppg.py", line 42
def compute_full_ppg(nnet: Nnet, feats: Matrix) -> Matrix:
^
SyntaxError: invalid syntax

======================================================================
ERROR: Failure: SyntaxError (invalid syntax (decode.py, line 23))

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/local/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/content/fac-via-ppg/test/test_utterance.py", line 19, in
from common import utterance
File "/content/fac-via-ppg/src/common/init.py", line 1, in
from .decode import *
File "/content/fac-via-ppg/src/common/decode.py", line 23
def read_nnet3_model(model_path: str) -> nnet3.Nnet:
^
SyntaxError: invalid syntax


Ran 5 tests in 0.002s

FAILED (errors=5)

for the export , i have used the following command as the provided command wasn't working for me:
! echo $PYTHONPATH
import os
os.environ['PYTHONPATH'] += ":/face-via-ppg/src"

and to make the script executable as mentioned in the readme i have used :
!chmod +x run_coverage.sh

Would be great if I can get help ASAP!!

Thanks in Advance

Different PPGs from the same audio

Hey, bro. Thank you for sharing your great work.
I was trying to extract PPG features from my own audio. But the result features are different when the input audio is the same. I figured that it's caused by the kaldi function "mfcc.compute_features" return different MFCCs from the same input. Does it affect the accuracy of the PPG and the model? If not, Why?

Question about am speaker adpatation

Hi. Thanks for continuing the fantastic work.

I am trying out your approach, and was wondering if the PPG extraction in your paper was speaker adaptive.

Your paper for this repository does not mention speaker adaptation. However both <Using phonetic posteriorgram based frame pairing for segmental accent conversion (2019)> and <Accent conversion using phonetic posteriorgrams (2018)> say they used speaker-indepent AM.

Below is the feature extraction procedure in compute_ppg.py in this repository. I don't see fmllr or ivector in the procedure, so was wondering if there was something else applied, or you simply did not used speaker-adpated model for this work.

Thank you!

    # Get MFCCs
    mfcc_opts = MfccOptions()
    mfcc_opts.use_energy = options["is_use_energy"]
    mfcc_opts.frame_opts.allow_downsample = options["is_downsample"]
    mfcc_opts.frame_opts.frame_shift_ms = options["frame_shift"]
    mfcc_opts.frame_opts.snip_edges = options["is_snip_edges"]
    mfccs = feat.compute_mfcc_feats(wav, mfcc_opts)

    # Apply CMN
    mfccs = feat.apply_cepstral_mean_norm(mfccs)

    # Splice feats
    feats = splice_frames(mfccs,
                          options["left_context"], options["right_context"])

    # Apply LDA
    feats = feat.apply_feat_transform(feats, lda)

'protoc' is not recognized as an internal or external command,

Hi, I am trying to follow the instruction on win10 x 64 however with this "protoc -I=src/common --python_out=src/common src/common/data_utterance.proto" I am getting the following error: 'protoc' is not recognized as an internal or external command,
operable program or batch file.

Would be great if I can get help ASAP!!

Thanks in Advance

Concerning LDA/fMLLR

Hi!

Was the LDA matrix used for MFCC feature transform precomputed based on the acoustic model training dataset?

Thanks so much for your time!

No module named 'waveglow'

Hi! Good project!

When I only loaded the pretrained model in generate_synthesis.py, an error was reported,as follows:

File "/home/miracy/文档/fac-via-ppg-master/src/script/generate_synthesis.py", line 66, in gen waveglow_for_denoiser = torch.load(waveglow_path) File "/home/miracy/anaconda3/envs/ppg-speech/lib/python3.7/site-packages/torch/serialization.py", line 367, in load return _load(f, map_location, pickle_module) File "/home/miracy/anaconda3/envs/ppg-speech/lib/python3.7/site-packages/torch/serialization.py", line 538, in _load result = unpickler.load() ModuleNotFoundError: No module named 'waveglow'

Thanks for your help!

data_utterance_pb2 is missing

Thank you for the great work.
I try to run the code, but found data_utterance_pb2 missed.
Can you upload it ?

Thank you very much.

Memory related issues encountered when training and pickling the features (on a custom dataset)

Hi, thanks for the excellent work. I'm trying to train the ppg2mel model on my dataset and I ran into some problems which I describe below. I would appreciate your advice on how to resolve them.

  1. When I set is_cache_feat=True, the process got Killed every time (whenever it tries to pickle the features after extracting them). I understand this might as a result of the CPU running out of memory when pickling the files. Did you ever encounter such a problem? If yes, how did you resolve it, please? I tried with dataset sizes of (1314, 2054, and 3359) but when I reduced the dataset size to 10, I didn't encounter the error.

  2. For dataset sizes of (1314, 2054, and 3359), I disabled the is_cache_feat=False due to (1), however, after the features were extracted, I got CUDA out of memory error during training, the error reads CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 15.78 GiB total capacity; 12.74 GiB already allocated; 4.75 MiB free; 14.80 GiB reserved in total by PyTorch. I understand that might be due to my GPU memory capacity (Tesla V100-SXM2, 15GiB). Are there some hyperparameters that I could reduce inorder to successfully train the model? I'm currently using the hyperparameters in create_hparams_stage(). When I reduced the dataset size to 10, all works well. These are the hparams used.

  3. What should my Train loss and Grad Norm look like, please? I wasn't sure how to interpret the results gotten per epoch and thought to ask if you could share your training log file. This is my training logfile with dataset trainsize=10 and validsize=10

Again, thank you for your work. It's really interesting and a huge contribution to research.

ModuleNotFoundError: No module named 'kaldi'

Hi, I have been struggling with this error since past week and unable to find a working solution to this, I have already installed Kaldi in my system however when I run the "train_ppg2mel.py" I run into this error.

Traceback (most recent call last):
File "script/train_ppg2mel.py", line 42, in
from common.fp16_optimizer import FP16_Optimizer
File "/mnt/c/Users/Bharkha/Desktop/Barkha_office/Accent_Conversion/fac-via-ppg/src/common/init.py", line 1, in
from .decode import *
File "/mnt/c/Users/Bharkha/Desktop/Barkha_office/Accent_Conversion/fac-via-ppg/src/common/decode.py", line 17, in
from kaldi import nnet3
ModuleNotFoundError: No module named 'kaldi'

I am using WSL on win10x64 and till now everything seems to be working perfectly until I ran into this error.

Any help will be appreciated,
Thanks in advance

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.