Giter Site home page Giter Site logo

ace's Introduction

ACE - Accessible Chess Experience

ACE (Accessible Chess Experience) is a real time voice powered chess application which lets you play online with your friends. The game has features like moving pieces, finding pieces on board, getting board summary, repeating opponent moves, and much more, all implemented using voice commands.

Inspiration

We looked online and found out that two of the most popular chess websites, lichess and chess.com, have no voice options for the visually impaired. We wanted to create something, that can help those who are visually impaired to have a complete experience without the hassle on relying on screen readers for every single move. And thus originated the idea of voice powered chess, ACE.

Features

  1. Play chess online with your friends using voice commands

  2. Move chess piece using voice

  3. Find piece on a particular square

  4. Get chessboard summary

  5. Get voice alerts for invalid moves, check and checkmate situations

Tech Stack

  1. Frontend - ReactJS
  2. Backend - NodeJS
  3. Speech-To-Text - Azure Speech SDK
  4. Real Time Communications - Web Sockets

Try It Yourself

Here is a link to the website

Contributing to ACE

  1. ACE uses Azure text to speech API for speech recognition. The project requires a speech resource on Azure portal (to get access to SPEECH_KEY and SPEECH_REGION). However if you are interested in contributing to the project but unable to make an azure speech resource, we will share azure credentials to get you started on contrinuting to this project. You can join our discord server to get access to azure speech key and region.

  2. All issues for this project are created here on this frontend repository, however you can make changes to backend as well and submit PR on backend repository as well.

Dev Setup

Prerequisites

  • NodeJS
  • npm
  • Azure account and Azure Speech Resource

Start the server

Link to backend repository

  1. Clone the above repository
  2. cd into the ACE-Backend folder
  3. Create a .env file and add the SPEECH_KEY and SPEECH_REGION from your azure speech service credenials. (Refer to .env.example file)
  4. Go to the terminal and run the following commands
npm install
node app.js

The server will be started at localhost:8000

Start the client

  1. Clone this repository
  2. cd into the ACE folder
  3. Open the config.js file in src/services folder
  4. Replace CLIENT_URL with http://localhost:3000
  5. Replace SERVER_URL with http://localhost:8000
  6. Go to the terminal and run the following commands
npm install

npm start

Visit localhost:3000 to play the game

Screenshots

image

ace's People

Contributors

atreyamaj avatar n-maido avatar sameerkash avatar saum7800 avatar suhanichawla avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ace's Issues

Implement chat/voice call

We can implement a chat or voice call feature so that two players can communicate with each other in real-time while playing. Maybe we can use the webspeech API to speak out the contents of the chat as well.

Keyboard input for moves

Add a box where the user can put in the row and column of a square to specify a square. Can be used for Find Piece and Make Move.

When those two functions are selected, maybe autofocus on the text box.

Voice prompts on repeat

Sometimes, the computer voice will repeat itself several times.
I've included an example of the voice repeating the "copy link" prompt:

repeat.mp4

Break the move piece loop

When user makes a move, if the computer does not recognize a piece it will keep asking the user the piece name in a loop. Add a condition such that if the piece is not recognized more than three times, the loop breaks and the user is required to make the move all over again

Remove username entry

Remove the requirement for a username and allow direct link generation after pressing start on home/landing page.

Speech misclassification

We are currently using the Azure speech API. It tends to misclassify words frequently when different accents are used. Maybe we can:

  1. Further train the azure model endpoint using custom speech samples and use that endpoint in the game.
  2. Hardcode some rules such as changing misclassified words like "Ivan" to E1.
  3. Explore other speech APIs, for example GCP.

If anyone needs Azure credentials, please contact us here:
https://discord.gg/EmtXC9xug6

Create matches with a timer

Both players get time limit of 20 mins, the timer starts when it's player's move. When a player runs out of time, the opponent wins the game.

Keyboard Interrupt to stop speak positions

Currently, when speak positions is called there is no way to interrupt the computer speech. It will continue till all the pieces on the board are spoken out. To fix this, when speak positions is going on, user should be able to press esc key to break out of the function.

Improve UI of landing page

The landing page should consist of the rules and icon of the project. Revamp the landing page UI to make it look better.

Move own piece

Three stage Process:

  1. Computer: "Piece?"
    User: "Knight"

Note: This preferably shouldn't apply for the King and Queen since they are unique pieces. We can add this small tweak later iafter everything else is working.

  1. Computer: "Source Square?"
    User: "A1"

  2. Computer: "Destination Square?"
    User: "H8"

Prompt invalid move if the move is not possible, "Currently in check" if the user is in check.

Allow user to restart game with same opponent

Currently, when a game gets over the user does not have the option to restart the game with the same person.
We can create a workflow where when the game ends, a pop up shows where user has the option to restart the game. The opponent is asked permission for rematch, if opponent agrres, a new game starts on the same link i.e. the board resets.
Link to backend repository: https://github.com/suhanichawla/ACE-Backend

Freeze game board when match ends.

When the game ends (either checkmate or resignation), the game board should be frozen with no further moves being made even if both the players are still on the page.

Options for Resigning, and offering a draw.

Preferably add double confirmation. Since currently it's only two people playing via a link, resign immediately refreshes the board and a new game is started.

If a draw is offered, a draw request is sent to the opponent. If confirmed, then new game is started. Else, game continues.

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.