Need help with fake-voice-detection?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

dessa-oss
183 Stars 57 Forks Apache License 2.0 11 Commits 13 Opened issues

Description

Using temporal convolution to detect Audio Deepfakes

Services available

!
?

Need anything else?

Contributors list

DeepFake Audio Detection

With the popularity and capabilities of audio deep fakes on the rise, creating defenses against deep fakes used for malicious intent is becoming more important than ever.

We built a fake audio detection model with Foundations Atlas, for anyone to use. If you'd like to read more about why we decided to build this, click here.

Here are two examples of short audio clips in

./data/example_clips/
folder. One of them is real and the other is fake.

This repository provides the code for a fake audio detection model built using Foundations Atlas. It also includes a pre-trained model and inference code, which you can test on any of your own audio files.

Setup

  1. Git Clone this repository.
  2. If you haven't already, install Foundations Atlas Community Edition.
  3. Once you've installed Foundations Atlas, activate your environment if you haven't already, and navigate to your project folder, and then into the
    code
    directory.
  4. Run the following line in the terminal to install the required packages:
pip install -r requirements.txt

That's it, You're ready to go!

Note: To run the code, your system should meet the following requirements: RAM >= 32GB , GPUs >=1

Overview

The dataset used in this project is from the ASVSpoof 2019 competition. We have used the "logicalaccess" part of this dataset in this project. The "logicalaccess" data consist of several short audio clips in

.flac
format. You can download the raw data here. To make it easy for anyone to get started, we provide the already preprocessed audio files (converted to spectrograms) on an Amazon S3 bucket.

The preprocessed ASV dataset contains train, validation and test set on which the model performance is measured. The model performance is also measured on a state-of-the-art fake voice synthesis model called "Realtalk", created by Dessa. Refer here to learn more about RealTalk.

All of the code required for this project is in the

code/
directory. So, make sure you navigate into the
code/
directory to run any scripts.

To get started, you can download this data by running the following command in the terminal (make sure you are running the script from

code/
directory):
bash download_data.sh

Note: Once the download completes, open the

job.config.yml
. On line 18, you'll find a the following filepath:
/media/biggie2/sachinrana/fake-audio-detection/data
. Replace this filepath with the absolute path to the
data/
folder in this project, wherever you've saved it.

You'll be able to train a model by running

main.py
in your Python Editor, or the following line in terminal:
python main.py

This will train a model using our baseline hyperparameters, save it, and evaluate it's performance on a validation and test set. You can view the Atlas GUI (https://localhost:5555) to see the model training, view saved artifacts, or see the model on TensorBoard.

If you'd like to see our model architecture, or make changes to the model architecture, you can find the model code in

utils.py
in the
Discriminator_Model
class. Make changes as you please to see if you can improve the model!

Using the Pre-trained Model

We are providing our pre-trained model which is saved on the Amazon S3 bucket. If you ran

bash downlaod_data.sh
then you should see a folder named
fitted_objects/
created inside the
code/
directory inside which you will find the pre-trained model. This is simple baseline model that we created to get you started. It achieves 85% accuracy and 0.58 f1 score on the test set.

To run our pre-trained model on your own audio: 1. Copy your audio files to

data/inference_data/unlabeled/
2. Run the inference script by running
inference.py
in your Python Editor or by running the follow command in the terminal.
python inference.py

Once the run completes, you should see a print out with information on predictions of the model, the accuracy of the model on your provided data, as well as which examples it got right, and which it got wrong.

Running a Hyperparameter Search

Foundations Atlas makes it super easy to run a hyperparameter search. In the

constants.py
file, you can find
generate_config()
function with the baseline hyperparameters that we searched over. You can replace these with any hyperparemters you want, to use for your model; once you're ready, simply run the following command in the terminal to send jobs to Foundations Atlas.
python submit_jobs.py

Now you should be able to see your running and queued jobs on the Atlas GUI.

Foundations Atlas GUI

You can view the Atlas GUI (https://localhost:5555) to see the model training, view saved artifacts, or see the model on TensorBoard. Here are a few images of the gui:

Experiment Tracker

Artifact Viewer

Tensorboard Integration

License

Copyright 2015-2020 Square, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

© 2020 Square, Inc. ATLAS, DESSA, the Dessa Logo, and others are trademarks of Square, Inc. All third party names and trademarks are properties of their respective owners and are used for identification purposes only.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.