How to Contribute a Blog Post

To submit a blog post, you need to have a GitHub account and basic knowledge of Git and Markdown. You dont need to be expert or a developer, a copule of YouTube videos will be enough to get you started!

1Fork the Repository

Start by forking the OpenVoiceOS blog repository to your GitHub account.

2Create a New Branch

Clone your forked repository locally and create a new branch for your blog post:

git clone https://github.com/YOUR-USERNAME/ovos-blogs.git
cd ovos-blogs
git checkout -b blog/your-blog-post-name

3Create Your Blog Post

Create a new Markdown file in the _posts directory. You can download our template to get started. The filename should follow this format:

YYYY-MM-DD-title-of-your-post.md

For example: 2025-07-01-implementing-new-voice-features.md

4Format Your Blog Post

Each blog post requires a YAML front matter section followed by your markdown content. Here's the required format:

---
title: "Your Blog Post Title"
excerpt: "A brief summary of your blog post (1-2 sentences)"
coverImage: "/assets/blog/common/cover.png"
date: "YYYY-MM-DDT00:00:00.000Z"
author:
  name: "Your Name"
  picture: "https://github.com/yourusername.png"
ogImage:
  url: "/assets/blog/common/cover.png"
---

Your markdown content goes here...

Note: For the author picture, you can use your GitHub profile picture URL or another appropriate image URL.

5Adding Images to Your Blog Post

Image Directory Structure

When adding images to your blog post, follow these guidelines:

  1. Dimensions of images should be 16:9 (use 1920x1080 or 1280x720) for best results.
  2. Create a directory for your blog post images at: /public/assets/blog/BLOG_NAME/
  3. Where BLOG_NAME should match your blog post name (e.g., custom-wake-words)
  4. Place all your images inside this directory (e.g., diagram.png, screenshot.jpg)

Referencing Images in Markdown

To include images in your blog post, use the following markdown syntax:

![Alt text for the image](/assets/blog/BLOG_NAME/image-filename.png)

For example: ![Wake Word Training Process](/assets/blog/custom-wake-words/training-diagram.png)

Image Best Practices

  • Use descriptive filenames for your images (e.g., wake-word-training-flow.png)
  • Optimize images for web (compress images to reduce file size)
  • Use PNG format for diagrams, screenshots, or images with transparency
  • Use JPG format for photos
  • Provide meaningful alt text for accessibility

6Co-authors (Optional)

If your blog post has co-authors, you can include them like this:

coauthors:
  - name: "Co-Author Name"
    picture: "https://github.com/coauthorusername.png"
  - name: "Another Co-Author"
    picture: "https://github.com/anothercoauthor.png"

7Markdown Formatting

You can use standard Markdown syntax in your blog post:

Text Formatting

  • # Heading 1
  • ## Heading 2
  • **Bold Text**
  • *Italic Text*
  • `Code`

Elements

  • [Link](URL)
  • ![Alt text](image URL)
  • - Bullet point
  • 1. Numbered item
  • ```language\ncode\n```

8Example Blog Post

Here's a complete example of a blog post with image references:

---
title: "Implementing Custom Wake Words in OpenVoiceOS"
excerpt: "Learn how to create and implement your own custom wake words in OpenVoiceOS for a personalized voice assistant experience."
coverImage: "/assets/blog/custom-wake-words/header-image.jpg"
date: "2025-07-01T00:00:00.000Z"
author:
  name: "Jane Developer"
  picture: "https://github.com/janedeveloper.png"
ogImage:
  url: "/assets/blog/custom-wake-words/social-card.jpg"
---

# Implementing Custom Wake Words in OpenVoiceOS

Wake words are the phrases that activate your voice assistant, like "Hey Google" or "Alexa." With OpenVoiceOS, you can create your own custom wake words, allowing for a more personalized experience.

![Wake Word Visualization](/assets/blog/custom-wake-words/wake-word-viz.png)

## Why Custom Wake Words Matter

Custom wake words provide several benefits:

- **Personalization**: Choose a name that feels natural to you
- **Privacy**: Use a unique phrase that won't be triggered accidentally
- **Branding**: For businesses, use your brand name as the wake word

## Getting Started

To implement a custom wake word in OpenVoiceOS, you'll need to follow these steps:

1. Collect audio samples
2. Train your wake word model
3. Integrate the model with OpenVoiceOS

![Process Diagram](/assets/blog/custom-wake-words/process-diagram.png)

Let's dive deeper into each of these steps.

### Collecting Audio Samples

The first step is to collect audio samples of your wake word. You'll need at least 100 recordings of different people saying your wake word in various environments.

```bash
# Example command to record wake word samples
ovos-record-wake-word --name "my-wake-word" --samples 100
```

![Recording Interface](/assets/blog/custom-wake-words/recording-interface.jpg)

### Training Your Wake Word Model

Once you have your audio samples, you can train your wake word model using the OpenVoiceOS training tools.

And so on...

9Submit Your Pull Request

After creating your blog post and adding any images, commit your changes and push to your forked repository:

# Add your blog post
git add _posts/YYYY-MM-DD-your-post-title.md

# Add any images you created
git add public/assets/blog/your-blog-name/*

git commit -m "Add blog post: Your Post Title"
git push origin blog/your-blog-post-name

Then, go to the original OpenVoiceOS blog repository and create a Pull Request from your branch.

10Review Process

After submitting your PR, the OpenVoiceOS team will review your blog post. They might suggest changes or improvements before merging your contribution.

Once approved and merged, your blog post will be published on the OpenVoiceOS blog!

Additional Tips

  • Keep your blog post focused on topics relevant to OpenVoiceOS, voice assistants, or open-source technology.
  • Include images where appropriate to make your post more engaging.
  • Proofread your post carefully before submitting.
  • If you're unsure about the topic or content, feel free to open an issue first to discuss your blog post idea.
  • Preview your markdown in a markdown editor before submitting to ensure proper formatting.