{"id":18535493,"url":"https://github.com/contextlab/autofr","last_synced_at":"2025-10-11T12:49:01.013Z","repository":{"id":78046418,"uuid":"86351278","full_name":"ContextLab/autoFR","owner":"ContextLab","description":"Template for a free recall experiment with automatic audio transcription","archived":false,"fork":false,"pushed_at":"2020-05-24T01:51:29.000Z","size":2067,"stargazers_count":8,"open_issues_count":4,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-10T14:49:15.640Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ContextLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-03-27T15:20:10.000Z","updated_at":"2022-12-01T14:59:29.000Z","dependencies_parsed_at":"2023-03-05T17:00:27.460Z","dependency_job_id":null,"html_url":"https://github.com/ContextLab/autoFR","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ContextLab/autoFR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ContextLab%2FautoFR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ContextLab%2FautoFR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ContextLab%2FautoFR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ContextLab%2FautoFR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ContextLab","download_url":"https://codeload.github.com/ContextLab/autoFR/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ContextLab%2FautoFR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007195,"owners_count":26084249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T19:24:40.346Z","updated_at":"2025-10-11T12:49:00.994Z","avatar_url":"https://github.com/ContextLab.png","language":"JavaScript","readme":"![autoFR logo](images/AutoFR_Logo_small.png)\n\n# Overview\nAutoFR is a verbal free recall experiment that incorporates automatic speech-to-text processing by wrapping the [Google Cloud Speech API](https://cloud.google.com/speech).  We've implemented the experiment using [jsPsych](http://www.jspsych.org/) and [psiTurk](https://psiturk.org/) for easy deployment on [Amazon Mechanical Turk](https://www.mturk.com/mturk/welcome).  (You can also follow the instructions below to run the experiment locally.)  This code may be used \"as is,\" or it may be used as a template to create your own variants of this experiment.\n\n# Installing autoFR\n+ Install [Docker](https://www.docker.com/) and [Google Chrome](https://www.google.com/chrome/browser/desktop/index.html)\n+ Clone this repo: `git clone https://github.com/ContextLab/autoFR.git`\n+ Set up Google Cloud Speech following [these](http://cdl-quail.readthedocs.io/en/latest/tutorial/speech_decoding.html#setting-up-the-google-speech-api) instructions. (see `exp/autoFR/google-credentials/credentials.json` for an empty template). Once you have a JSON formatted API keyfile downloaded, replace the empty template with it, renaming this new JSON to `credentials.json`.\n+ Insert your `aws_access_key_id` and `aws_secret_access_key` in the file `exp/.psyturkconfig`. This file appears hidden, so you may have to change your file explorer's visibility settings to find and open it. You may also add your `psiturk_access_key_id` and `psiturk_secret_access_id` to this file, though it is not necessary to run the experiment locally.\n+ Create an empty folder called `exp/audio`, which is where the participant data will be stored.\n\n# Running autoFR\n+ Run docker\n+ Navigate to the cloned repo in terminal and type `docker-compose up -d` (this may take a little while)\n+ Then, type: `docker attach autofr_psiturk_1`\n+ Navigate to the experiment folder: `cd autoFR`\n+ Type `psiturk`.  This should spin up a psiturk server\n+ Then, type: `server on` (you may get an error the first time you try this, but try it again).\n+ Then type `debug` \u003c-this will initialize a local version of the experiment.\n+ Point your Google Chrome browser to `localhost:22362` and follow the on-screen instructions to run in the experiment!\n\n**IMPORTANT NOTE:** Make sure you have pop-up blockers turned OFF!!\n\n# Analyzing the data\nThe audio data is stored in the folder `autoFR/audio`.  Each new subject's data is put in a folder with a unique name.  At the end of an experiment, the audio data is automatically shipped off to Google Speech, and a text file and response object will be saved out for each list.\n\nWe've created [Quail](http://cdl-quail.readthedocs.io/en/latest/), a Python toolbox for analyzing and plotting free recall data.  Detailed instructions may be found [here](http://cdl-quail.readthedocs.io/en/latest/tutorial.html); in summary, Quail relies on a data structure called an `egg`.  To create an `egg` object from the data you collect from this experiment (so that you can analyze it with Quail, make plots, etc.), follow the example code below:\n\n```\nimport quail\n\n# location of the database\ndbpath = '~/exp/autoFR/participants.db'\n\n# location of the audio files\nrecpath = '~/exp/autoFR/audio/'\n\n# option to remove subjects\nremove_subs = ['debugV2WLPQ:debugQN6O0V', 'debugFIGADU:debugPSS00O', 'debugZ5SE8F:debugYT96YP']\n\n# experiment word pool\nwordpool = '~/exp/autoFR/static/files/cut_wordpool.csv'\n\n# experiment version (defined in autoFR/config.txt)\nexperiments = ['0.0', '1.0', '1.1', '6.1', '7.1', '8.1']\n\n# optionally group experiments with different versions into a single egg\ngroupby = {'exp_version': [['0.0', '1.0', '1.1'], '6.1', '7.1', '8.1']}\n\n# generate a list of `eggs` of len(groupby['exp_version'])\neggs = quail.load(dbpath=dbpath, recpath=recpath, remove_subs=remove_subs,\n                  wordpool=wordpool, experiments=experiments, groupby=groupby)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontextlab%2Fautofr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontextlab%2Fautofr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontextlab%2Fautofr/lists"}