Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date

Project VOICE

Ask DeepWiki

Project VOICE is an experimental software developed as a communication support tool using generative AI for people who have difficulty in vocalizing and / or typing due to disabilities.

This software uses generative AI to predict possible words and sentences that might be implied by the user’s input. The user can select a suggested word or sentence using accessibility features such as eye tracking and / or switch access. We aim to enable users to input longer sentences in fewer steps than other input methods.

Demo animation

Before you begin

Project VOICE is a web application built on Gemini API, and it’s designed to be run on Google App Engine primarily. Please set up a Google Cloud project with these APIs enabled. You will also need to install Python and Node.js to build and run the application.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
    Go to project selector
  2. Make sure that billing is enabled for your Google Cloud project. See this page for details.
  3. Enable Gemini API.
    Gemini API
  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:
    gcloud init
    
  6. Run the following commands to configure the project and Application Default Credentials:
    gcloud auth login
    
    gcloud config set project <YOUR_PROJECT_ID>
    
  7. If you wish to change the Google Cloud project for billing and quota, run:
    gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
    
  8. Install uv if you haven’t.
  9. Install Node.js if you haven’t.

Development

  1. Run git clone <this repo>.

  2. Install libraries by running npm i.

  3. Set the environment variables for the Gemini API access:

    export GEMINI_API_KEY=YOUR_API_KEY
  4. Run the local development server by running npm run dev. This will start a local demo at http://localhost:5000/.

Localization

This project uses lit-localize for internationalization.

  • To extract messages for localization, run npm run localize:extract.
  • To build localized modules, run npm run localize:build.

Deployment

This app is designed to be deployed to Google App Engine primarily. Keep the following in mind when you deploy the app to your own Google Cloud project.

  1. Secrets Management: It is recommended to use Secret Manager for storing secrets. Create secrets with the following names in your Google Cloud project:

    • GEMINI_API_KEY: Your API key for the Gemini API.
    • SECRET_KEY: A unique, secret string used for CSRF validation.

    Ensure the App Engine default service account has the Secret Manager Secret Accessor role.

    Alternatively, you can still set them in app.yaml (though not recommended for security reasons):

    env_variables:
    GEMINI_API_KEY: "YOUR_API_KEY"SECRET_KEY: "YOUR_OWN_VALUE"
  2. Run npm run deploy.

Storybook

You can spin up the Storybook server by running npm run storybook. This is helpful for UI component development by providing isolation from the app context.

Notice

Please avoid entering potentially sensitive or personally identifiable information (PII) into this application.

Disclaimer

This is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

This project is intended for demonstration purposes only. It is not intended for use in a production environment.

Contributors

This project exists thanks to all the people who have contributed.

  • Adriana Guevara Rukoz
  • Atsuko Yamagami
  • Atsushi Yamashita
  • Ayush Agarwal
  • Daisuke Chijiwa
  • Jason Zhang
  • Johnny Huang
  • Kevin Chang
  • Satoru Arao
  • Shuhei Iitsuka
  • Subhashini Venugopalan
  • Tomoki Oinuma
  • Yasuaki Takebe
  • Yu-Sheng Li

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

66 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages