{"id":26561868,"url":"https://github.com/burnycoder/syri","last_synced_at":"2025-10-06T21:46:49.286Z","repository":{"id":283164161,"uuid":"950864444","full_name":"BurnyCoder/syri","owner":"BurnyCoder","description":"AI voice assistant that uses web browser use with Claude 3.7 Sonnet via Portkey, AssemblyAI for speech-to-text and ElevenLabs for text-to-speech","archived":false,"fork":false,"pushed_at":"2025-06-15T11:49:51.000Z","size":431,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-08T20:56:30.706Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/BurnyCoder.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-18T19:53:47.000Z","updated_at":"2025-06-15T11:49:54.000Z","dependencies_parsed_at":"2025-06-07T19:03:20.071Z","dependency_job_id":"cfd5742f-dabf-4e3e-9600-ffa43b5da253","html_url":"https://github.com/BurnyCoder/syri","commit_stats":null,"previous_names":["burnycoder/syri"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BurnyCoder/syri","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurnyCoder%2Fsyri","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurnyCoder%2Fsyri/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurnyCoder%2Fsyri/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurnyCoder%2Fsyri/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BurnyCoder","download_url":"https://codeload.github.com/BurnyCoder/syri/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BurnyCoder%2Fsyri/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278686637,"owners_count":26028325,"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-06T02:00:05.630Z","response_time":65,"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":"2025-03-22T14:18:37.310Z","updated_at":"2025-10-06T21:46:49.281Z","avatar_url":"https://github.com/BurnyCoder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Syri - AI Voice Assistant\n\nThis is snapshot of early development. Newer versions are private.\n\nAn open-source AI voice assistant that uses:\n- OpenAI Whisper for speech-to-text\n- Web browser-based agent for AI response generation (using Claude 3.7 Sonnet)\n- OpenAI TTS for text-to-speech\n\nThis project enables a fully conversational AI experience similar to Siri, but using powerful AI models, a web browser agent, and high-quality audio APIs.\n\n## Setup Instructions\n\n### Step 1: Prerequisites\n\n1. **API Keys:**\n   - Sign up for [OpenAI](https://platform.openai.com) to get an API key (used for both STT and TTS)\n   - Sign up for [Portkey](https://portkey.ai) to get API keys for Claude 3.7 Sonnet\n\n2. **Install PortAudio** (required for audio recording):\n   - Debian/Ubuntu: `apt install portaudio19-dev`\n   - MacOS: `brew install portaudio sox`\n\n3. **For MacOS users only:** Install MPV for audio streaming\n   - `brew install mpv`\n\n4. **Chrome Browser:**\n   - Google Chrome must be installed as the web agent will launch and control Chrome\n\n### Step 2: Install Python Dependencies\n\n```bash\nuv sync\n```\n\n### Step 3: Configure Environment Variables\n\n1. Copy the template file to create your own environment file:\n   ```bash\n   cp .envtemplate .env\n   ```\n\n2. Edit the `.env` file and replace the placeholder values with your actual API keys:\n   ```\n   OPENAI_API_KEY=your_actual_openai_key_here\n   PORTKEY_API_KEY=your_actual_portkey_key_here\n   PORTKEY_VIRTUAL_KEY_ANTHROPIC=your_actual_portkey_virtual_key_here\n   ```\n\n   Optional TTS configuration:\n   ```\n   SYRI_TTS_VOICE=coral     # Options: alloy, echo, fable, onyx, nova, shimmer\n   SYRI_TTS_SPEED=1.2       # Speech speed multiplier\n   ```\n\n## Usage\n\nYou can run the assistant using either of these methods:\n\n### Method 1: Using the runner script (recommended)\n\n```bash\nuv run run.py\n```\n\nThis script performs pre-checks and starts the assistant in an inactive listening state.\n\n1. To start listening, press Enter or run `./scripts/start_listening.sh` (useful for automation)\n2. Describe your request\n3. Press Enter again or run `./scripts/stop_listening.sh` when done\n4. The AI will transcribe your speech, process it through the web agent, and respond both in text (console) and through speech\n\n## Context\n\nThis is PoC sketch. Newer version uses OpenAI voice agents and was moved to different repo. \n\n## How It Works\n\nWhen you speak to Syri:\n1. Your voice is recorded using PyAudio\n2. The recording is transcribed to text using OpenAI Whisper\n3. The transcribed text is sent to a web agent that runs Chrome browser automation\n4. The web agent uses Claude 3.7 Sonnet through Portkey to generate responses\n5. The response is converted to speech using OpenAI TTS\n\n## License\n\nMIT \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburnycoder%2Fsyri","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fburnycoder%2Fsyri","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburnycoder%2Fsyri/lists"}