npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

earthy-player

v0.7.0

Published

Intelligently convert HTML to audio.

Downloads

57

Readme

Earthy Player

Intelligently convert HTML to audio.

CircleCI

Motivation

I've never been a fast reader. When I'm given a choice between a physical book, and an audiobook of the same content, I'll reach for the latter... 100 times out of 100. Whenever there's a long piece of text I need to read, I always look for an audio option first. While these options are expanding in recent years, the vast majority of online prose does not allow for listening.

You can use your device's in-built accessibility tools to do text-to-speech. You can ask Siri "read this article" and it sometimes works. But even when it does, this is far from ideal.

I've tried various text-to-speech APIs, and Google Cloud's is the best I've found. They use some sort of machine-learning magic, and as a result, the output sounds extremely lifelike. This is far more similar to a real human voice than AWS' equivalent offering ("Polly"), for example.

So I find myself writing various packages to convert HTML to an audio file I can listen to. Therefore, I wanted to make an npm package from which all of my other projects can import. This is that project.

What It Does

It can do the following things:

  1. Take an HTML file and pull out the actual content of the article.
  2. Break this text apart into "segments". This means putting pauses in the places where pauses should go, adding sound effects as desired, and cleaning up various abbreviations.
  3. Take this "segments" file from the previous step and create an mp3 file.

Also:

  1. The Google API will not work if you give it too much text at a time. This repo abstracts away that problem for you, chunking it into separate requests.
  2. There are other potential headaches this repo may alleviate, and I will add them to this list later.

Quick Start

You'll need to create a Google Cloud API key. You can use this article as instructions, but the important part is that you end up with a file at ~/.google-api-credentials.json. You'll need to create a project within their console, and then enable the "Cloud Text-to-Speech API" on that project.

You'll also need ffmpeg installed. Install this with brew install ffmpeg or similar.

Let's say you want to convert this article to speech. First clone this repo:

git clone https://github.com/Arro/earthy-player.git

Next, go to the example directory:

cd earthy-player/example

Next, install the example:

npm install

Now, run it:

npm start

Finally, check your ~/Downloads folder. There should be a new folder there called readme-cat/.

Run the Tests

These are the commands:

  1. npm run test to run the tests. This repo uses ava for testing.
  2. npm run tdd to run the test with "--watch" enabled.