Multi tacotron voice cloning инструкция

Search code, repositories, users, issues, pull requests…

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Skip to content

M

multi-tacotron-voice-cloning


Project ID: 150


Star


0


Find file

Download source code

zip


tar.gz


tar.bz2


tar

  • Clone with SSH

  • Clone with HTTPS

  • Open in your IDE

    Visual Studio Code (SSH)
    Visual Studio Code (HTTPS)
    IntelliJ IDEA (SSH)
    IntelliJ IDEA (HTTPS)
  • Copy SSH clone URL[email protected]:vanutp/multi-tacotron-voice-cloning.git
  • Copy HTTPS clone URLhttps://foxlab.dev/vanutp/multi-tacotron-voice-cloning.git
  • README
  • MIT License

Клонирование голоса при помощи нейросети

overbafer1

Сегодня мы разбёрем метод подмены голоса при помощи нейросети, благодаря которой, вы можете воспроизвести практически любой текст, любым голосом человека(даже знаменитостей)

Так как это нейросеть, то что бы добиться приемлемого качества голоса, необходимо долго «учить» её, на основе разных голосовых записей человека
это занимает сотни часов и десятки гигабайт файлов.

Но в этой статье мы разберём 2 возможных пути этой реализации:

1) Установка утилиты непосредственно на наш ПК и проведение всех манипуляций практически с нуля(заранее скачав «натренированные» данные)

2) Онлайн решение на Колаборатории гугла (быстро,есть русский язык)

Сразу скажу, что онлайн решение будет более быстрым и менее геморным, но а если вы хотите тренировать свою нейросеть, то тут никак не обойтись без установки всего этого на ПК.

Итак, рассмотрим сначала первый вариант.

Устанавливаем Multi-Tacotron-Voice-Cloning на ваш ПК

1)Переходим по ссылке на github проект клонирования голоса: https://github.com/vlomme/Multi-Tacotron-Voice-Cloning

и сразу скачаем проект на пк

2)Скачиваем заранее натренированные модели:

https://drive.google.com/uc?id=1aQBmpflbX_ePUdXTSNE4CfEL9hdG2-O8

3) Если ваш ПК и интернет это позволяет, рекомендуется также скачать

готовый сет для клонирования голоса:

http://www.openslr.org/resources/12/train-clean-100.tar.gz

Дальше разберемся что куда кидать.

4)Если вы устанавливали Avatarify(подмена лица), то у вас должен быть установленная Anaconda prompt.

Если у вас её нет, то скачиваем по ссылке:

https://www.anaconda.com/products/individual#Downloads

Нужно выбрать Python 3.7 версию

5) Нужно также скачать и установить тулкит CUDA 10.0, если конечно до этого не устанавливали.

https://developer.nvidia.com/cuda-10.0-download-archive

6)После всего этого, запускаем Anaconda prompt(miniconda3) и прописываем следующие команды:

conda create -n clone python=3.6

Далее нас попросят нажать y и продолжить(enter):

Готово,теперь нам нужно активировать виртуальную среду, которую мы только что сделали

Для этого прописываем там же:

conda activate clone

После этого, нужно устанавливать необходимые пакеты

прописываем в консоле Anaconda:

conda install pytorch

Также подтверждаем

Теперь распаковываем архив с github, и копируем его путь.Далее в консоли анаконды прописываем:

cd (ВАШ ПУТЬ К ФАЙЛАМ С АРХИВА)

Теперь прописываем:

pip install -r requirements.txt

пошла установка необходимых модулей,нужно дождаться конца установки.

ещё пропишем одну команду:

conda install numba

Теперь нужно распаковать те доп. архивы,которые вы скачивали ранее

архив pretrained.zip распаковываем прямо в папку с программой Real-Time-Voice-Cloning-master, а второй архив если скачивали:

создаём в папке с программой подпапку LibriSpeech

в ней создаём папку train-clean-100 и туда скидываем данные с распакованного архива.

Так же,что бы не было ошибок, закидываем в папку утилиты dll файлы CUDA:

cudart64_100.dll

cudnn64_7.dll

Их можно найти в папке: C:\ProgramData\Miniconda3\pkgs\pytorch-1.0.0-py3.7_cuda100_cudnn7_1\Lib\site-packages\torch\lib

Если устанавливали avatarify, то тут: ProgramData\Miniconda3\envs\avatarify\Lib\site-packages\torch\lib

Теперь попробуем запустить:

Вводим в анаконде следующее:

python demo_toolbox.py

Процесс много жрёт! на системе с 16 гб ОЗУ пришлось закрыть почти все программы, имейте ввиду.

У нас откроется главное окно:

Вверху по кнопке Browse мы загружаем нужный нам образец голоса в формате wav. Либо можно записать фрагмент своего голоса, нажав на кнопку record.

Вы должны понимать, что речь должна быть нормальной, состоящей из 9-10 слов, обладать чёткостью. Натренированные данные заточены под английский текст, так что с русским тут не выйдет(англ. более менее)

После того, как загрузили голос, пишем нужный текст на английском вверху справа, и нажимаем кнопку Synthesize and vocode. После чего, мы услышим полученный вариант голоса
Если несколько раз проводить эту процедуру, то качество голоса может самостоятельно улучшаться.

Вот пример голоса Игоря, до и через несколько проходов:

https://drive.google.com/file/d/12gaRJEx2WZdNeWQd2pJHVGVqa3rVmyXv/view?usp=sharing

Если хотите сохранить результат:

Редактируем изначально файл demo_cli.py, прописываем нужный текст и имя исх.файла:

Сохраняем, и в анаконде вместо python demo_toolbox.py прописываем:

python demo_cli.py

И всё, пойдёт процесс генерации. По завершению вы получите в той же папке готовый вариант.

Что же,вариант очень интересный, но занимает много времени,ресурсов и сил.
Да и тренировать свои данные надо,не вариант

переходим ко второму варианту.

Tacotrone на Colaboratory

1.Переходим по ссылке

https://colab.research.google.com/github/vlomme/Multi-Tacotron-Voice-Cloning/blob/master/Multi_Tacotron_Voice_Cloning.ipynb

2.Нажимаем Connect в правом углу

Теперь во вкладке runtime выбираем run all.

Теперь в конце отобразятся 2 аудиофайла: Оригинал и склонированный, с заданным текстом.

здесь уже подготовлено всё,даже пример голоса. Можете попробовать написать свой текст на русском в этом поле:

Теперь, если мы хотим загрузить чей-то голос, то для начала надо подготовить его в формате wav, затем открыть слева в меню Files:

Нажимаем кнопку Upload вверху, и выбираем наш подготовленный голос. достаточно даже 9-15 секунд речи.

после того, как файл прогрузился, сместим его ближе к ex.wav:

В этой строчке меняем сначала название файла на ваш загруженный, и также меняем текст на желаемый.

После этого нажимаем запуск кода:

После завершения, прокручиваем вниз и запускаем следующий код:

Ниже отобразится клонированный файл,который вы можете прослушать либо скачать

Вот пример голоса Киркорова:

https://drive.google.com/file/d/1tPvgt2Tc8IMqukMS4LX3eb2g2gEN4LNL/view?usp=sharing

Стоит отметить, что не с каждым примером голоса всё работает корректно.Речи может совсем не быть, или очень не разборчивая
Так что нужно поэкспериментировать, ведь тут тоже данные тренировались на шаблонном примере, но может выйти очень неплохой результат и с этими данными.Экспериментируйте с разными вариантами текста, а так же голоса.

Стоит отметить, что при перезагрузке этого сайта вам придётся проводить все манипуляции заново, а так же не будут сохраняться ваши загруженные файлы.

Многоязычный синтез речи с клонированием

Время на прочтение
5 мин

Количество просмотров 41K

Хотя нейронные сети стали использоваться для синтеза речи не так давно (например), они уже успели обогнать классические подходы и с каждым годам испытывают на себе всё новые и новый задачи.

Например, пару месяцев назад появилась реализация синтеза речи с голосовым клонированием Real-Time-Voice-Cloning. Давайте попробуем разобраться из чего она состоит и реализуем свою многоязычную (русско-английскую) фонемную модель.

Строение

Наша модель будет состоять из четырёх нейронных сетей. Первая будет преобразовывать текст в фонемы (g2p), вторая — преобразовывать речь, которую мы хотим клонировать, в вектор признаков (чисел). Третья — будет на основе выходов первых двух синтезировать Mel спектрограммы. И, наконец, четвертая будет из спектрограмм получать звук.

Наборы данных

Для этой модели нужно много речи. Ниже базы, которые в этом помогут.

Обработка текста

Первой задачей будет обработка текста. Представим текст в том виде, в котором он будет в дальнейшем озвучен. Числа представим прописью, а сокращения раскроем. Подробнее можно почитать в статье посвященной синтезу. Это тяжелая задача, поэтому предположим, что к нам поступает уже обработанный текст (в базах выше он обработан).

Следующим вопросом, которым следуют задаться, это использовать ли графемную, или фонемную запись. Для одноголосного и одноязычного голоса подойдет и буквенная модель. Если хотите работать с многоголосой многоязычной моделью, то советую использовать транскрипцию (Гугл тоже).

G2P

Для русского языка существует реализация под названием russian_g2p. Она построена на правилах русского языка и хорошо справляется с задачей, но имеет минусы. Не для всех слов расставляет ударения, а также не подходит для многоязычной модели. Поэтому возьмём созданный ей словарь, добавим словарь для английского языка и скормим нейронной сети (например этим 1, 2)

Прежде чем обучать сеть, стоит подумать, какие звуки из разных языков звучат похоже, и можно им выделить один символ, а для каких нельзя. Чем больше будет звуков, тем сложнее модели учиться, а если их будет слишком мало, то у модели появиться акцент. Не забудьте ударным гласным выделять отдельные символы. Для английского языка вторичное ударение играет малую роль, и я бы его не выделял.

Кодирование спикеров

Сеть схожа с задачей идентификации пользователя по голосу. На выходе у разных пользователей получаются разные вектора с числами. Предлагаю использовать реализацию самого CorentinJ, которая основана на статье. Модель представляет собой трехслойный LSTM с 768 узлами, за которыми следует полносвязный слой из 256 нейронов, дающие вектор из 256 чисел.

Опыт показал, что сеть, обученная на английской речи, хорошо справляется и с русской. Это сильно упрощает жизнь, так как для обучения требуется очень много данных. Рекомендую взять уже обученную модель и дообучить на английской речи из VoxCeleb и LibriSpeech, а также всей русской речи, что найдёте. Для кодера не нужна текстовая аннотация фрагментов речи.

Тренировка

  1. Запустите python encoder_preprocess.py <datasets_root> для обработки данных
  2. Запустите «visdom» в отдельном терминале.
  3. Запустите python encoder_train.py my_run <datasets_root> для тренировки кодировщика

Синтез

Перейдём к синтезу. Известные мне модели не получают звук напрямую из текста, так как, это сложно (слишком много данных). Сначала из текста получается звук в спектральной форме, а уже потом четвертая сеть будет переводить в привычный голос. Поэтому сначала поймём, как спектральное вид связанна с голосом. Проще разобраться в обратной задаче, как из звука получить спектрограмму.

Звук разбивается на отрезки длинной 25 мс с шагом 10 мс (по умолчанию в большинстве моделей). Далее с помощью преобразования Фурье для каждого кусочка вычисляется спектр (гармонические колебания, сумма которых даёт исходный сигнал) и представляется в виде графика, где вертикальная полоса — это спектр одного отрезка (по частоте), а по горизонтальной — последовательность отрезков (по времени). Этот график называется спектрограммой. Если же частоту закодировать нелинейно (нижние частоты качественнее, чем верхние), то изменится масштаб по вертикали (нужно для уменьшения данных) то такой график называют Mel спектрограммой. Так устроен человеческий слух, что небольшое отклонение на нижних частотах мы слышим лучше, чем на верхних, поэтому качество звука не пострадает

Существует несколько хороших реализаций синтеза спектрограмм, такие как Tacotron 2 и Deepvoice 3. У каждой из этих моделей есть свои реализации, например 1, 2, 3, 4. Будем использовать(как и CorentinJ) модель Tacotron от Rayhane-mamah.

Tacotron основан на сети seq2seq с механизмом внимания. Ознакомитесь с подробностями в статье.

Тренировка

Не забудьте отредактировать utils/symbols.py, если будете синтезировать не только английскую речь, hparams.pу, а так же preprocess.py.

Для синтеза нужно много чистого, хорошо размеченного звука разных спикеров. Здесь чужой язык не поможет.

  1. Запустите python synthesizer_preprocess_audio.py <datasets_root> для создания обработанного звука и спектрограмм
  2. Запустите python synthesizer_preprocess_embeds.py <datasets_root> для кодирования звука (получения признаков голоса)
  3. Запустите python synthesizer_train.py my_run <datasets_root> для тренировки синтезатора

Вокодер

Теперь осталось только преобразовать спектрограммы в звук. Для этого служит последняя сеть — вокодер. Возникает вопрос, если спектрограммы получаются из звука с помощью преобразования Фурье, нельзя ли с помощью обратного преобразования получить снова звук? Ответ и да, и нет. Гармонические колебания, из которых состоит исходный сигнал, содержат как амплитуду, так и фазу, а наши спектрограммы содержат информацию только об амплитуде (ради сокращения параметров и работаем со спекрограммами), поэтому если мы сделаем обратное преобразование Фурье, то получим плохой звук.

Для решения этой проблемы придумали быстрый алгоритм Гриффина-Лима. Он делает обратное преобразование Фурье спектрограммы, получая «плохой» звук. Далее делает прямое преобразования этого звука и получают спектр, в котором уже содержится немножко информации о фазе, причём амплитуда в процессе не меняется. Далее берётся еще раз обратное преобразование и получается уже более чистый звук. К сожалению, качество сгенерированной таким алгоритмом речи оставляет желать лучшего.

На его смену пришли нейронные вокодеры, такие как WaveNet, WaveRNN, WaveGlow и другие. CorentinJ использовал модель WaveRNN за авторством fatchord

image

Для предобработки данных используется два подхода. Либо получить спектрограммы из звука (с помощью преобразования Фурье), или из текста (с помощью модели синтеза). Google рекомендует второй подход.

Тренировка

  1. Запустите python vocoder_preprocess.py <datasets_root> для синтеза спектрограмм
  2. Запустите python vocoder_train.py <datasets_root> для вокодера

Итого

Мы получили модель многоязычного синтеза речи, умеющей клонировать голос.
Запустите toolbox: python demo_toolbox.py -d <datasets_root>
Примеры можно послушать тут

Советы и выводы

  • Нужно много данных (>1000 голосов, >1000 часов)
  • Скорость работы сравнима с реальным временем только при синтезе минимум 4 предложений
  • Для кодера используйте предобученную модель для английского языка, немножко дообучив. Она справляется хорошо
  • Синтезатор, обученный на «чистых» данных, работает лучше, но хуже клонирует, чем тот, кто обучался на большем объёме, но грязных данных
  • Модель хорошо работает только на данных, на которых училась

Можете синтезировать свой голос онлайн с помощью colab, или посмотреть мою реализацию на github и скачать мои веса.

Search code, repositories, users, issues, pull requests…

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

vlomme / multi-tacotron-voice-cloning
Goto Github
PK

View Code? Open in Web Editor
NEW

363.0
33.0
97.0
1009 KB

Phoneme multilingual(Russian-English) voice cloning based on

Home Page: https://github.com/CorentinJ/Real-Time-Voice-Cloning

License: Other

Jupyter Notebook 0.98%

Python 99.02%

deep-learning

pytorch

tensorflow

tts

voice-cloning

g2p

tacotron

wavernn

russian

Contributors

mark-rtb avatar

vlomme avatar

multi-tacotron-voice-cloning’s Issues

WaveGlow

Is it possible to use WaveGlow?
And not to train your own model but use pretrained?

How to run on new voices?

Hello,
Amazing work.
I am running inference using your models on 2080 gpu. your example is perfect. But when I give a new audio clip (in English) and make it say the same Russian sentence, the output audio isn’t good. There’s lot of noise, and cloning is not even of good quality.

My question is:

  1. Can I use pretrained models(from this repo) to clone a new speaker, and make it speak Russian? or Should I train every thing(g2p, encoder, synthesizer, vocoder) on new speaker(assuming I obtain hours of this speaker’s audio)? Please advise.

Thanks,
S

Вопрос по поводу поддержки

Здравствуйте. У меня видео-карта GeForce GT 630M. Уж очень нужно запустить программу, но там у PyTorch минимум compute capability 3.0, а на моей видеокарте 2.1
Нужен именно интерфейс, для изучения графиков, на Colab только ввиде командной строки.
Если устанавливаю версию только CPU, то пишет, что не поддерживается.
Может быть есть способ отключить использование GPU и перейти на CPU?

No module named ‘tensorflow.contrib’

Tryed to run google collab, but there is an error. Please help.

How to implement it on local Computer?

Обучение нейронки

Доброго времени суток!
Как начать С НУЛЯ обучать нейронку? (т.е не нужен pretrained model)

missed file «g2p/en.dic»

Speech2Speech вместо Text2Speech

Спасибо больше за проект, я ищу какое-то быстрое решение для себя, которое могло бы делать voice style transfer (пародировать записанный голос по семплу), можно ли применить ваш синтезатор для этой задачи?

Есть альтернативные модели клонирующие лучше чем эта?(оригинальная английская модель не в счет)

Обучение сети для одного голоса.

Предположим нужно добиться хорошего звучания всего одного голоса(русский). Куда нажимать(инструкция для хомяков).

OOM Error by additional text to be spoken

I have a problem inserting additional text to be spoken into the toolbox. The additional lines cause the vocoder to crash with out of memory error. Trying with the original code from CorentinJ and code from here I found that activating g2p in toolbox / __ init__ caused this error.
Apparently the g2p binds the resources that are important for other neural networks and does not release them when it has finished its task.
Can you fix that somehow?

Thank you

pretrained Tocotron2

Hi. Thank you.
Is it possible to not train your own Tacotron2 and use pretrained model on russian language?
This for example https://github.com/alphacep/tn2-wg

Use of language embedding

Hi @vlomme,

Great work here, and thanks for open-sourcing it. I’m trying to understand how this works so that I can replicate it. I’ve gone through the code and don’t see any language embedding, which I thought would be how you separate the speaker from the language.

Can you please explain how language-speaker independence is achieved?

Training for other language other than Russian? English -> Other Language?

Hello, I am looking for a way So I can able to make a Japanese speaker speaks English, is it possible?

ModuleNotFoundError: No module named ‘distance’

File «…\g2p\train.py», line 4, in
from distance import levenshtein
ModuleNotFoundError: No module named ‘distance’

Training encoder

Thanks for work! Help me to train an encoder. How is it possible to add new custom voices to train datasets, or only fixed (like LibriSpeech: train-other-500, VoxCeleb1…) are available through the interface of commands:
python encoder_preprocess.py <datasets_root>
and
python encoder_train.py my_run <datasets_root>/SV2TTS/encoder

If possible, than how i should keep files, in root data directory or subfolders, in what formats? I tried to add my voice to subfolder but got an error like:

«Python encoder_preprocess.py data
Arguments:
datasets_root: data
out_dir: data/SV2TTS/encoder
datasets: [‘preprocess_voxforge’]
skip_existing: False

Preprocessing preprocess_voxforge
Couldn’t find data/book, skipping this dataset»

I looked at the source and found that there are fixed funcs that preprocess different formats of train data (like preprocess22,preprocess44…) What do they mean? Maybe i should use one of them?
Thank you.

pretrained model

Здравствуйте, экспериментировал с вашей моделью, но лишь некоторые записи дают хороший результат. На Хабре вы писали, что пробовали так же обучать модель только для русского языка и она работала лучше, у вас не осталось натренерованной модели? Если да, не могли бы вы поделиться ей?

Unable to clone any voice other then the provided «ex.wav»

Hello,
I tried using the demo with the pre-trained network.
See the attached example. The output is just pure noise.
Is there anything wrong with the voice sample i provided as input?
I tried both male / female.

Thanks,
orig_16.zip

Multi-Language Training

Hi,

I’m slightly confused in G2P model. Let’s suppose If I need to train a model which specifically translates from Russian to English (Only). Do I still need to add dictionary or train G2P model ?

Also, I’m not able to catch the significance of G2P model here. We have the synthesizer, which is already doing the same work.

Thanks!

Any Samples?

Hi I am doing similar work like yours, my datasets is «En + Chineses».
I have tried the pretrained model offered by CorentinJ, and also finetune on the pretrained model, but i have not achieve good results till now. I am still training the encoder model now. And I wonder if you have some good results to share?

Твоя версия лучше чем Real-Time-Voice-Cloning?

Интересует твоё оценочное суждение, может сэмплы накидаешь, чтобы поиметь представление?
Я пробовал https://github.com/CorentinJ/Real-Time-Voice-Cloning и результатом не впечатлён, куча каких то шумов, на пару тонов выше речь.

Не работает.

Запустил демо-версию, не работает.
image

How can i add Arabic Language ??

How can i add Arabic Language ??

use tacotron2 trained on russian?

first, thanks for such a complete pipeline.
second, would you integrate e.g. this repo for native russian support?

При запуске вне коллаба ошибка

OSError: [WinError 127] Не найдена указанная процедура. Error loading «C:\Users\admin\PycharmProjects\pythonProject\venv\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll» or one of its dependencies.

Пробовал разные методы и подходы, в общем ничего не помогает… Даже не знаю что и делать.

P.S. tensorflow-gpu поддерживается только до python-3.7, всё что выше будет писать ошибку что не нашло нужной версии.

Может кто сталкивался?

Training problem

First of all, thank you for sharing the open-source of Multi-Tacotron-Voice-Cloning. I also just started learning about natural language processing programming. And I also started learning Python programming.
-I put the software in the directory: D: \ SV2TTS
-I put the dataset in the directory: D: \ Datasets, I have D: \ Datasets \ book and D: \ Datasets \ LibriSpeech

When using the code you provided, I had some training issues:

  1. I have finished the steps
  • Run python encoder_preprocess.py D: \ Datasets
    and the result is
    Arguments:
    datasets_root: D: \ Datasets
    out_dir: D: \ Datasets \ SV2TTS \ encoder
    datasets: [‘preprocess_voxforge’]
    skip_existing: False
    Done preprocessing book.
  1. Run visdom
  2. But I could not continue
  • Run python encoder_train.py my_run D: \ Datasets
    because the notice appeared
    C: \ Users \ Admin \ anaconda3 \ envs \ [Test_Voice] \ lib \ site-packages \ umap \ spectral.py: 4: NumbaDeprecationWarning: No direct replacement for ‘numba.targets’ available. Visit https://gitter.im/numba/numba-dev to request help. Thanks!
    import numba.targets
    usage: encoder_train.py [-h] [—clean_data_root CLEAN_DATA_ROOT]
    [-m MODELS_DIR] [-v VIS_EVERY] [-u UMAP_EVERY]
    [-s SAVE_EVERY] [-b BACKUP_EVERY] [-f]
    [—visdom_server VISDOM_SERVER] [—no_visdom]
    run_id
    encoder_train.py: error: unrecognized arguments: D: \ Datasets

My question: How can I fix this problem?

Thanks again for your sharing!!!

Could not find a version

❯ python3 -m pip install -r requirements.txt
ERROR: Could not find a version that satisfies the requirement tensorflow-gpu<=1.14.0 (from -r requirements.txt (line 1)) (from versions: 2.2.0rc1, 2.2.0rc2, 2.2.0rc3, 2.2.0rc4, 2.2.0, 2.2.1, 2.3.0rc0, 2.3.0rc1, 2.3.0rc2, 2.3.0, 2.3.1)
ERROR: No matching distribution found for tensorflow-gpu<=1.14.0 (from -r requirements.txt (line 1))
❯ python --version
Python 3.8.5

Could not find a version that satisfies the requirement PyQt5

  Could not find a version that satisfies the requirement PyQt5 (from -r requirements.txt (line 13)) (from ver
sions: )
No matching distribution found for PyQt5 (from -r requirements.txt (line 13))

Не видит dataset

Привет, у меня не видит dataset RU. LibriSpeech видит, а русский dataset не видит. Что делать? Спасибо

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.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • 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.

  • Visualization

    Some thing interesting about visualization, use data art

  • 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.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Понравилась статья? Поделить с друзьями:
  • Multi tabs woman 50 инструкция
  • Multi tabs man 50 из финляндии инструкция
  • Multi function jump starter инструкция на русском языке
  • Multi dog training system инструкция на русском
  • Multi function beauty device инструкция на русском языке