Skip to content

Commit

Permalink
Merge pull request #2 from deepgram-starters/initial-starter-example
Browse files Browse the repository at this point in the history
[HOLD] Implement Go TTS WS Starter
  • Loading branch information
davidvonthenen authored Sep 18, 2024
2 parents cc081c5 + 19f751c commit 55a3769
Show file tree
Hide file tree
Showing 19 changed files with 966 additions and 176 deletions.
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.html linguist-detectable=false
*.css linguist-detectable=false
*.js linguist-detectable=false
30 changes: 30 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Binaries for programs and plugins
.DS_Store
*.exe
*.exe~
*.dll
*.o
*.a
*.so
*.dylib

# Folders
_obj
_test
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Dependency directories (remove the comment below to include it)
# vendor/

# cgo stuff
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*
_testmain.go
.idea/
*.iml
30 changes: 15 additions & 15 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
- Focusing on what is best not just for us as individuals, but for the
overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities
Expand All @@ -60,7 +60,7 @@ representative at an online or offline event.

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
Deepgram Developer Relations <[email protected]>.
[email protected].
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
Expand Down Expand Up @@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
Expand All @@ -116,13 +116,13 @@ the community.

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
<https://www.contributor-covenant.org/faq>. Translations are available at
<https://www.contributor-covenant.org/translations>.
151 changes: 48 additions & 103 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,105 +1,50 @@

# Contributing Guidelines

:+1::tada: We :heart: contributions from everyone! :tada::+1:

It is a good idea to reach out with an issue first if you plan to add any new functionality. Otherwise, bug reports, bug fixes and feedback is always appreciated. Check out the [Contributing Guidelines][contributing] for more information and please follow the [GitHub Flow][githubflow].

![contributions welcome][contribadge]

The following is a set of guidelines for contributing to this project, which are hosted on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.

Please take the time to review the [Code of Conduct][coc], which all contributors are subject to on this project.

[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question)

[TOC]

## Reporting Bugs

This section guides you through submitting a bug report. Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior :computer: :computer:, and find related reports :mag_right:.

Before creating bug reports [please check for other issues,](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out the issue, and include any information it asks for to help us resolve issues faster.

> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
### Before Submitting A Bug Report

* **Perform a cursory search** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one.

### How Do I Submit A (Good) Bug Report?

Bugs are tracked as GitHub issues. Create an issue and provide the following information as required or necessary.

Explain the problem and include additional details to help maintainers reproduce the problem:

* **Use a clear and descriptive title** for the issue to identify the problem.
* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining how you started. When listing steps, **don't just say what you did, but explain how you did it**.
* **Provide specific examples to demonstrate the steps**. Include links to files or copy/pasteable snippets, which you use in those examples. If you're providing snippets in the issue, use [Markdown code blocks][githubcodeblocks].
* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior.
* **Explain which behavior you expected to see instead and why.**
* **Include screenshots and animated GIFs** where possible. Show how you follow the described steps and clearly demonstrate the problem. You can use [this tool][licecap] to record GIFs on macOS and Windows, and [this tool][silentcast] on Linux.
* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below.
* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens.
Include details about your configuration and environment:

## Suggesting Enhancements

This section guides you through submitting a suggestion, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:.

Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill out [the required template][featurerequest], the information it asks for helps us resolve issues faster.

### Before Submitting An Enhancement Suggestion

* **Perform a cursory search** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.

### How Do I Submit A (Good) Enhancement Suggestion?

Enhancement suggestions are tracked as GitHub issues. Create an issue and provide the following information.

* **Use a clear and descriptive title** for the issue to identify the suggestion.
* **Provide a step-by-step description of the suggested enhancement** in as many details as possible.
* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks][githubcodeblocks].
* **Describe the current behavior** and **explain which behavior you expected to see instead** and why.
* **Explain why this enhancement would be useful** to most users.

## Your First Code Contribution

Unsure where to begin contributing? You can start by looking through these `beginner` and `help-wanted` issues on any of our projects. While not perfect, number of comments is a reasonable proxy for impact a given change will have.

## Pull Requests

Please follow these steps to have your contribution considered by the maintainers:

1. Follow all instructions in [the template][pullrequest]
2. Adhear the [Code of Conduct][coc]
3. After you submit your pull request, verify that all [status checks][githubstatuschecks] are passing.

While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted.

# I don't want to read this whole thing I just have a question!!!

You can join our community for any questions you might have:

* [Contact our Developer Relations Team][community]
* [Reach out on Twitter][twitter]
* This Twitter is monitored by our Marketing and Developer Relations team, but not 24/7&mdash;please be patient!

Alternatively, you can raise an issue on the project.

[contribadge]: https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat "Contributions Welcome"

[coc]: CODE_OF_CONDUCT.md "Code of Conduct"
[contributing]: CONTRIBUTING.md "Contributing"
[license]: LICENSE "MIT License"
[pullrequest]: PULL_REQUEST_TEMPLATE/PULL_REQUEST_TEMPLATE.md "Pull Request template"

[community]: https://github.com/orgs/deepgram/discussions "Deepgram Community"
[signup]: https://console.deepgram.com/signup "Deepgram Console"
[twitter]: https://twitter.com/DeepgramAI "Deepgram on Twitter"

[githubcodeblocks]: https://help.github.com/articles/markdown-basics/#multiple-lines "GitHub Markdown Code Blocks"
[githubflow]: https://guides.github.com/introduction/flow/index.html "GitHub Flow"
[githubstatuschecks]: https://help.github.com/articles/about-status-checks/ "GitHub Status Checks"
[licecap]: https://www.cockos.com/licecap/ "LICEcap: animated screen captures"
[silentcast]: https://github.com/colinkeenan/silentcast "Silentcast: silent mkv screencasts and animated gifs"
Want to contribute to this project? We ❤️ it!

Here are a few types of contributions that we would be interested in hearing about.

* Bug fixes
* If you find a bug, please first report it using Github Issues.
* Issues that have already been identified as a bug will be labeled `bug`.
* If you'd like to submit a fix for a bug, send a Pull Request from your own fork and mention the Issue number.
* Include a test that isolates the bug and verifies that it was fixed.
* New Features
* If you'd like to accomplish something in the extension that it doesn't already do, describe the problem in a new Github Issue.
* Issues that have been identified as a feature request will be labeled `enhancement`.
* If you'd like to implement the new feature, please wait for feedback from the project maintainers before spending
too much time writing the code. In some cases, `enhancement`s may not align well with the project objectives at
the time.
* Tests, Documentation, Miscellaneous
* If you think the test coverage could be improved, the documentation could be clearer, you've got an alternative
implementation of something that may have more advantages, or any other change we would still be glad hear about
it.
* If its a trivial change, go ahead and send a Pull Request with the changes you have in mind
* If not, open a Github Issue to discuss the idea first.
* Snippets
* To add snippets:
* Add a directory in the `snippets` folder with the name of the language.
* Add one or more files in the language directory with snippets.
* Update the `package.json` to include the snippets you added.

We also welcome anyone to work on any existing issues with the `good first issue` tag.

## Requirements

For a contribution to be accepted:

* The test suite must be complete and pass
* Code must follow existing styling conventions
* Commit messages must be descriptive. Related issues should be mentioned by number.

If the contribution doesn't meet these criteria, a maintainer will discuss it with you on the Issue. You can still
continue to add more commits to the branch you have sent the Pull Request from.

## How To

1. Fork this repository on GitHub.
1. Clone/fetch your fork to your local development machine.
1. Create a new branch (e.g. `issue-12`, `feat.add_foo`, etc) and check it out.
1. Make your changes and commit them. (Did the tests pass? No linting errors?)
1. Push your new branch to your fork. (e.g. `git push myname issue-12`)
1. Open a Pull Request from your new branch to the original fork's `main` branch.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2023 Deepgram Templates
Copyright (c) 2024 Deepgram Devs

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
77 changes: 37 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,84 +1,81 @@
> Copy the entire contents of https://github.com/deepgram-starters/deepgram-starters-ui to the `./static/` folder.
# Text-to-Speech WebSocket Starter for Go

> The name of the project and repo, is less important than the correct configuration of the `deepgram.toml` file, if you wish for it to be included in future onboarding workflows.
This example app demonstrates how to use the Deepgram Text-to-Speech API over WebSockets with Go.

# [Usecase] [Language] Starter
The flow of this sample is:

> Write an intro for this project
1. A websocket is opened from the UI to the backend Go component
1. Text is sent over a websocket to the backend component
1. If a connection has not been established to Deepgram, create a websocket connection using the Python SDK and send the text to convert to audio
1. An audio byte response with synthesized text-to-speech is returned and forward back through the WebSocket created by the UI
1. Those audio bytes are then played by the media device contained within your browser

Nifty little into, maybe a screenshot.
<img src="/public/assets/preview-starter.png" alt="A preview of the app" style="width: 400px; height: auto; border-radius: 10px; margin-top: 20px;">

## Sign-up to Deepgram

> Please leave this section unchanged, unless providing a UTM on the URL.
## What is Deepgram?

Before you start, it's essential to generate a Deepgram API key to use in this project. [Sign-up now for Deepgram](https://console.deepgram.com/signup).
[Deepgram](https://deepgram.com/) is a voice AI company providing speech-to-text and language understanding capabilities to make data readable and actionable by human or machines.

## Quickstart
## Sign-up to Deepgram

> Detail the manual steps to get started.
Before you start, it's essential to generate a Deepgram API key to use in this project. [Sign-up now for Deepgram and create an API key](https://console.deepgram.com/signup?jump=keys).

e.g.
## Quickstart

### Manual

Follow these steps to get started with this starter application.

#### Clone the repository

Go to GitHub and [clone the repository](https://github.com/deepgram-starters/prerecorded-node-starter).
Go to GitHub and [clone the repository](https://github.com/deepgram-starters/go-live-text-to-speech).

#### Install dependencies

Install the project dependencies.

```bash
npm install
go mod tidy
```

#### Edit the config file
#### Set your Deepgram API key

> Config file can be any appropriate file for the framework/language. For e.g.
> Node is using a config.json file, while Python is only use .env files
If using bash, this can be done in your `~/.bash_profile` like so:

Copy the code from `sample.env` and create a new file called `.env`. Paste in the code and enter your API key you generated in the [Deepgram console](https://console.deepgram.com/).

```json
DEEPGRAM_API_KEY=%api_key%
```bash
export DEEPGRAM_API_KEY="YOUR_DEEPGRAM_API_KEY"
```

#### Run the application
#### Run the Go Application

> to support the UI, it must always run on port 8080
The `dev` script will run a web and API server concurrently. Once running, you can [access the application in your browser](http://localhost:8080/).
If you have set your `DEEPGRAM_API_KEY` environment variable, start the Backend go application using this command:

```bash
npm start
go run main.go
```

## What is Deepgram?

Deepgram is an AI speech platform which specializes in (NLU) Natural Language Understanding features and Transcription. It can help get the following from your audio.
If you haven't, this could also be done by a simple export before executing your Go application:

- [Speaker diarization](https://deepgram.com/product/speech-understanding/)
- [Language detection](https://deepgram.com/product/speech-understanding/)
- [Summarization](https://deepgram.com/product/speech-understanding/)
- [Topic detection](https://deepgram.com/product/speech-understanding/)
- [Language translation](https://deepgram.com/product/speech-understanding/)
- [Sentiment analysis](https://deepgram.com/product/speech-understanding/)
- [Entity detection](https://deepgram.com/product/speech-understanding/)
- [Transcription](https://deepgram.com/product/transcription/)
- [Redaction](https://deepgram.com/product/transcription/)
```bash
DEEPGRAM_API_KEY="YOUR_DEEPGRAM_API_KEY" go run main.go
```

## Create a Free Deepgram Account
#### Open the UI in a Browser

Before you start, it's essential to generate a Deepgram API key to use in our starter applications. [Sign-up now for Deepgram](https://console.deepgram.com/signup).
To open the Frontend UI, just navigate to `http://localhost:3000` in Chrome.

## Issue Reporting

If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Security Policy](./SECURITY.md) details the procedure for contacting Deepgram.

## Getting Help

We love to hear from you so if you have questions, comments or find a bug in the project, let us know! You can either:

- [Open an issue in this repository](https://github.com/deepgram-starters/live-node-starter/issues/new)
- [Join the Deepgram Github Discussions Community](https://github.com/orgs/deepgram/discussions)
- [Join the Deepgram Discord Community](https://discord.gg/xWRaCDBtW4)

## Author

[Deepgram](https://deepgram.com)
Expand Down
5 changes: 0 additions & 5 deletions SECURITY.md

This file was deleted.

Loading

0 comments on commit 55a3769

Please sign in to comment.