{"id":27767334,"url":"https://github.com/proxoar/talk","last_synced_at":"2025-04-29T18:01:51.359Z","repository":{"id":188046594,"uuid":"678009922","full_name":"moderato-app/talk","owner":"moderato-app","description":"Talk with ChatGPT using your VOICE","archived":true,"fork":false,"pushed_at":"2024-09-23T15:32:32.000Z","size":5852,"stargazers_count":122,"open_issues_count":0,"forks_count":16,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-23T08:02:18.996Z","etag":null,"topics":["audio","chatgpt","elevenlabs","gemini","gemini-pro","go","golang","google-speech","google-text-to-speech","react","single-page-app","speech-to-text","talk","text-to-speech"],"latest_commit_sha":null,"homepage":"https://talk.proxoar.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moderato-app.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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}},"created_at":"2023-08-13T11:49:19.000Z","updated_at":"2024-12-15T04:48:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"37a8c042-cd6d-45ab-9f3f-8aa1010ad521","html_url":"https://github.com/moderato-app/talk","commit_stats":null,"previous_names":["proxoar/talk","moderato-app/talk"],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moderato-app%2Ftalk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moderato-app%2Ftalk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moderato-app%2Ftalk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moderato-app%2Ftalk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moderato-app","download_url":"https://codeload.github.com/moderato-app/talk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251556433,"owners_count":21608448,"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","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":["audio","chatgpt","elevenlabs","gemini","gemini-pro","go","golang","google-speech","google-text-to-speech","react","single-page-app","speech-to-text","talk","text-to-speech"],"created_at":"2025-04-29T18:01:50.432Z","updated_at":"2025-04-29T18:01:51.346Z","avatar_url":"https://github.com/moderato-app.png","language":"Go","funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# Archived\nSince 2023, many apps have come out and offer a better user experience than this project. I don't see the point in maintaining it anymore.\n\n# Talk\n\nTalk is a single-page application crafted to converse with AI using voice, replicating the user experience akin to a\nnative app.\n\n**[Demo](https://talk.proxoar.com)**  (No registration or login needed. Simply start conversing. For an optimal\nexperience, open in Chrome)\n\n![figjam-talk-2023-09-22.png](doc/figjam-talk-2023-09-22.png)\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ca  href=\"https://www.figma.com/file/4Uhzr87YVN1KR5ayz7WDYm/Talk?type=whiteboard\u0026t=OGwMZMSKsWZIwG0T-1\" target=\"_blank\"\u003e\nMore details\n\u003c/a\u003e\n\u003c/div\u003e\n\n# Highlighted Features\n\n- Broad range of service providers to choose from: ChatGPT, Google Gemini, Elevenlabs, Google Text-toSpeech, Whisper and\n  Google\n  Speech-to-Text\n- Enable voice-driven dialogues\n- Modern and stylish user interface\n- Unified, standalone binary\n\n# How to use\n\n## 1. Prepare a `talk.yaml` file.\n\nHere is a [simple example](example/talk.simple.example.yaml) utilising ChatGPT, Whisper and\nElevenlabs:\n\n```yaml\nspeech-to-text:\n  whisper: open-ai-01\n\nllm:\n  chat-gpt: open-ai-01\n\ntext-to-speech:\n  elevenlabs: elevenlabs-01\n\n# provide your confidential information below.\ncreds:\n  open-ai-01: \"sk-2dwY1IAeEysbnDNuAKJDXofX1IAeEysbnDNuAKJDXofXF5\"\n  elevenlabs-01: \"711sfpb9kk15sds8m4czuk5rozvp43a4\"\n```\n\n* Not interested in Voice? Give this a try:\n```yaml\nllm:\n  chat-gpt: open-ai-01\ncreds:\n  open-ai-01: \"sk-2dwY1IAeEysbnDNuAKJDXofX1IAeEysbnDNuAKJDXofXF5\"\n```\n\n* Looking to utilise Google Gemini, Google Text-to-Speech and Google Speech-to-Text? Not to worry, we have that covered.\nPlease refer\nto [talk.google.example.yaml](example/talk.google.example.yaml) for more information\n\n* The comprehensive example: [talk.full.example.yaml](example/talk.full.example.yaml)\n\n## 2. Start the application\n\n### Docker\n\n```shell\ndocker run -it -v ./talk.yaml:/etc/talk/talk.yaml -p 8000:8000 proxoar/talk\n```\n\n### Terraform\n\nRefer to [terraform](example/terraform). The same applies to Kubernetes.\n\n### From scratch\n\n```shell\n# clone projects\ngit clone https://github.com/proxoar/talk.git proxoar/talk\ngit clone https://github.com/proxoar/talk-web.git proxoar/talk-web\n\n# build web with yarn and copy; currently using node v20.3.0 \ncd proxoar/talk-web \u0026\u0026 make copy\n\n# build backend\ncd ../talk \u0026\u0026 make build\n\n# run\n./talk --config ./talk.yaml\n# or simply `./talk` as it automatically lookup talk.yaml in `/etc/talk/talk.yaml` and `./talk.yaml`\n./talk\n```\n\n# Advanced usage\n\n### Proxy\n\nWe honour `HTTP_PROXY` and `HTTPS_PROXY` env variables. Given that all communication between the Talk server and\nservice providers occurs via HTTPS, simply employ `HTTPS_PROXY`.\n\n```shell\ndocker run -it -v ./talk.yaml:/etc/talk/talk.yaml \\\n-e HTTPS_PROXY=http://192.168.1.105:7890 \\\n-p 8000:8000 \\\nproxoar/talk\n```\n\n### Log level\n\nDefault log level is `info`, Use env `LOG_LEVEL` to change log level: \"debug\", \"info\", \"warn\", \"error\", \"dpanic\", \"\npanic\", and \"fatal\". e.g.,\n\n```shell\nLOG_LEVEL=debug ./talk\n```\n\n### HTTPS\n\n`proxoar/talk` offers three methods for enabling HTTPS.\n\n#### 1. Generate self-signed cert on the fly\n\nExample: [talk.tls.self.signed.example.yaml](example/talk.tls.self.signed.example.yaml)\n\n```yaml\nserver:\n  tls:\n    self-signed: true\n```\n\nThis is handy if you're indifferent to a domain and unconcerned about security, simply desiring to enable\nmicrophone access on browsers.\n\n##### 2. Provide your own TLS\n\nExample: [talk.tls.provided.example.yaml](example/talk.tls.provided.example.yaml)\n\n##### 3. Auto TLS\n\nThis configuration example facilitates automatic certificate acquisition from\nLetsEncrypt: [talk.tls.auto.example.yaml](example/talk.tls.auto.example.yaml)\n\nRequirements: You should have your personal VPS and domain.\n\n# Troubleshooting\n\n### Why can't I start the recording?\n\nWeb browsers safeguard your microphone from being accessed by non-HTTPS websites for security reasons, with the\nexceptions being `localhost` and `127.0.0.1`.\n\nHere are some possible solutions:\n\n1. Enable [HTTPS](#https). Particularly, you\n   can [Generate self-signed cert on the fly](#generate-self-signed-cert-on-the-fly) in a mere second.\n2. Run Talk through a reverse proxy like Nginx and set up TLS within this service.\n3. In Chrome, go to `chrome://flags/`, find `Insecure origins treated as secure`, and enable it:\n   \u003cbr\u003e\n   \u003cimg src=\"./doc/image/chrome-microphone-access.jpg\" alt=\"Markdownify\" width=\"600\"\u003e\n   \u003cbr\u003e\n\n# Browser compatibility\n\n|            | [Arc](https://arc.net/) | Chrome | FireFox | Edge | Safari |\n|:----------:|:-----------------------:|:------:|:-------:|:----:|:------:|\n| Microphone |            ✅            |   ✅    |    ✅    |  ❌   |   ❌    |\n|     UI     |            ✅            |   ✅    |    ✅    |  ✅   |   ❌    |\n\n# Q\u0026A\n\n**Q: Why not use TypeScript for both the frontend and backend development?**\n\nA:\n\n* When I embarked on this project, I was largely inspired by [Hugh](https://github.com/IgnoranceAI/hugh), a project\n  primarily coded in Python, supplemented with HTML and a touch of JavaScript. To broaden the horizons of text-to-speech\n  providers, I revamped the backend logic using Go, transforming it into a Go-based project.\n* Crafting backend logic with Go feels incredibly intuitive—it distills everything down to a single binary.\n* Moreover, my skills in frontend development were somewhat rudimentary at that time.\n\n**Q: Will a mobile browser-friendly version be made available?**\n\nA: Streamlining the website for mobile usage would be a time-intensive endeavour and, given my current time constraints,\nit isn't the primary concern. As it stands, the site performs optimally on desktop browsers based on the Chromium\nEngine, with certain limitations on browsers such as Safari.\n\n# Roadmap\n\n- [x] Google TTS\n- [x] Google STT\n- [x] OpenAI Whisper STT\n- [x] Setting language, speed, stability, etc\n- [x] Choose voice\n- [x] Docker image\n- [x] Server Side Events(SSE)\n- [x] More LLMs other than ChatGPT\n- [x] Download and import text history\n- [x] Download chat MP3\n- [x] Prompt template\n- [ ] Dark mode\n\n# Contributing\n\nWe're in the midst of a dynamic development stage for this project and warmly invite new contributors.\n\n[CONTRIBUTING.md](CONTRIBUTING.md)\n\n# Credits\n\n### Front-end\n\n* [React](https://github.com/facebook/react): The library for web and native user interfaces\n* [vite](https://github.com/vitejs/vite): Next generation frontend tooling. It's fast!\n* [valtio](https://github.com/pmndrs/valtio): Valtio makes proxy-state simple for React and Vanilla\n* [wavesurfer.js](https://github.com/katspaugh/wavesurfer.js): Audio waveform player\n* [granim.js](https://github.com/sarcadass/granim.js): Create fluid and interactive gradient animations with this small\n  javascript library.\n* [virtual](https://github.com/tanstack/virtual): Headless UI for Virtualizing Large Element Lists in JS/TS, React,\n  Solid, Vue and Svelte\n* [markdown-it](https://github.com/markdown-it/markdown-it): Markdown parser, done right. 100% CommonMark support,\n  extensions, syntax plugins \u0026 high speed\n* [highlight.js](https://github.com/highlightjs/highlight.js): JavaScript syntax highlighter with language\n  auto-detection and zero dependencies.\n\n### Back-end\n\n* This project draws inspiration from [Hugh](https://github.com/IgnoranceAI/hugh), a remarkable tool that enables\n  seamless communication with AI using minimal code.\n* [go-openai](https://github.com/sashabaranov/go-openai): OpenAI ChatGPT, GPT-3, GPT-4, DALL·E, Whisper API wrapper for\n  Go.\n* [google-cloud-go](https://github.com/googleapis/google-cloud-go): Google Cloud Client Libraries for Go. Thanks to\n  [googleapis](https://github.com/googleapis) for the prompt response to our concern.\n* [echo](https://github.com/labstack/echo): High performance, minimalist Go web framework\n* [elevenlabs-go](https://github.com/haguro/elevenlabs-go): A Go API client library for the ElevenLabs speech synthesis\n* [r3labs/sse](https://github.com/r3labs/sse/): Server Sent Events server and client for Golang platform.\n\n### Design\n\n* [wikiart.org](https://www.wikiart.org): Wikiart is a great place to find art online. Most wallpapers of Talk come\n  from WikiArt.org\n* [Arc](https://arc.net/): Arc is the Chrome replacement I’ve been waiting\n  for -- [THE VERGE](https://www.theverge.com/23462235/arc-web-browser-review)\n* [grainy-gradients](https://github.com/cjimmy/grainy-gradients): Thanks to [cjimmy](https://github.com/cjimmy/) for his\n  amazing [tutorial](https://css-tricks.com/grainy-gradients/) on noise and gradient background\n* [Signal-Desktop](https://github.com/signalapp/Signal-Desktop)\n  and [Signal-iOS](https://github.com/signalapp/Signal-iOS): Private messengers. Much of the inspiration for the UI\n  comes from Signal.\n\nWe would also like to thank all other open-source projects and communities not listed here for their valuable\ncontributions to our project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproxoar%2Ftalk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproxoar%2Ftalk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproxoar%2Ftalk/lists"}