Inspiration

A new kind of misinformation is becoming increasingly prevalent in society. With the rise of AI, it has become increasingly easier to produce falsified media content, like audio and video, i.e. deepfakes. It is also becoming increasingly harder to distinguish AI-generated content from real content with the models becoming advanced. So, we decided to create a tool to increase awareness about AI-led misinformation.

What it does

Our tool provides users the ability to experience how real AI-generated content could look, sound or appear. In a gamified way, the platform allows users to compare AI-generated versus real content and guess which is which. Subsequently, they can earn points through the rounds and also compete against others in a multiplayer mode. This allows them to practice recognising the hallmarks of AI-generated media and thus avoid being potentially misinformed by falsified media.

How we built it

We built it using mainly Python and Node.JS. AI integrations with Claude and ElevenLabs were used in the generation of AI content. MongoDB was used as a database.

We built the foundation of our website using Node.JS, with NextJS for the front-end, accompanied by TailwindCSS for styling. We used a Python Flask API to abstract our AI service accesses and keep a modular design, to allow for easier maintainability. Finally, for the persistence of our data, we used MongoDB as a database service. This allowed for a more fluid database service that was flexible enough for our purposes whilst still maintaining a significant degree of efficiency.

Challenges we ran into

One significant challenge we faced was to do with the generation of audio. The service we used, ElevenLabs, had strict restrictions on the usage of voices to generate media. This meant that we had to be very careful and considerate of our usage of voices and data. In addition, the implementation of the Claude LLM to generate text introduced an element of variability and non-consistency. This meant that sometimes our program would produce audio samples that did not seem anywhere similar to the person they were attempting to mimic, due to using a completely unrelated or non-applicable lexicon. Our workaround for this was to be more specific with our prompts and more careful in our requests, such that we avoided ambiguity and allowed for clearer instructions for the LLMs.

Another significant challenge that we faced was to do with the website. We often ran into the issue that static files were not rendered correctly or not found altogether. This was due to file access issues with our API, and differences in local paths across systems. The solution for this involved hosting the API in its own VPS that exported access to select files. This prevented an issue with the difference in files and allowed for more efficient access to images and audio. This introduced its own set of issues, however, wherein the VPS meant that certain websocket routes and other routes were broken. These required rewriting to some extent and adjusting to occupy different ports. In the end, it was fixed but the transition introduced a significant challenge.

Accomplishments that we're proud of

One accomplishment that we are proud of was our design of the API. We designed our API for access to the database and AI models in a robust manner, to better organise our code. Furthermore, it allowed for a more modular design for our system, which meant that our team members could work in parallel on separate sections. For example, someone could work on processing the response from the API, without the API having been completed, in a black box form of design. This increased our productivity significantly whilst introducing minimal additional complexity.

Another accomplishment is overcoming the aforementioned challenge with the file access and path issues. As mentioned earlier, transitioning to a hosted API solved the issues but then introduced its own problems. This means that we had to adapt to the new system and fix the issues whilst still developing the remainder of the program. Overall, while this was fairly challenging, we managed it well and organised ourselves effectively in order to tackle it successfully.

What we learned

One thing that we learnt is the importance of considering alternatives when researching a potential service to include in our processing pipelines. Before deciding upon ElevenLabs, we researched several other artificial text to speech services in order to evaluate our options and decide on an optimal choice. We looked at ParrotAI and were initially inclined to choose this, however we decided that the service was too slow and expensive for our uses. In addition, it did not have the degree of customisation that we needed for the service. We later also realised that, had we chosen ParrotAI, it would have severely complicated our pipeline as we would need to process and wait for the output from the service for far longer than if we went with ElevenLabs.

What's next for FakeSpot

Our ideas for extensions for FakeSpot include the following:

  • other forms of media (fake videos, images etc)
  • more multiplayer game modes (for example one where players are able to suggest images for consideration)
  • more

Built With

Share this project:

Updates