115 lines
4.8 KiB
HTML
115 lines
4.8 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport"
|
|
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
<title>TTS Server - Help</title>
|
|
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
|
|
</head>
|
|
<body>
|
|
<h1>What is it?</h1>
|
|
<p>
|
|
TTS Server is an Android-only application that provides a REST-based interface for on-board
|
|
TTS engine of your device. The application is aimed on home automation and allows you to give
|
|
a second life to your old smartphone, which can now act as a standalone, all-inclusive web TTS
|
|
provider for your speech-based home notification system.</p>
|
|
|
|
<h1>For what?</h1>
|
|
<p>
|
|
Android is provided with a great <b>offline</b> TTS engine for almost every language on the
|
|
world.
|
|
If you care about high availability of the web TTS provider or you don't want your notifications
|
|
go through the Internet to the cloud providers, you can utilise your smartphone to done the job.
|
|
</p>
|
|
|
|
<h1>How does it work?</h1>
|
|
<p>
|
|
TTS Server runs a service with HTTP server that exposes endpoints allowing you
|
|
to perform TTS task. As the Android implements its own process-killer, the application needs
|
|
to run the service <b>on the foreground</b> (so the notification is always shown)
|
|
keeping it alive and preventing it from being killed. Because of that, keep in mind that
|
|
the application might drain your battery, so it is recommended to use it <b>only</b>
|
|
on the devices being always connected to the power source.
|
|
</p>
|
|
|
|
<h1>Consuming REST interface</h1>
|
|
<p>
|
|
So far, the application provides three endpoints: <code>/say</code>, <code>/wave</code>,
|
|
<code>/sonos</code> and <code>/sonos/{fileName}</code>.
|
|
Each data-accepting endpoint works with JSON-based body, so each request carrying the data
|
|
requires a proper <code>Content-Type</code> header.
|
|
</p>
|
|
|
|
<h2>The <code>/say</code> endpoint</h2>
|
|
<pre>
|
|
POST /say
|
|
{
|
|
"text": "The text to be spoken",
|
|
"language": "en_US"
|
|
}
|
|
</pre>
|
|
<p><b>Returns:</b> <code>200 OK</code> with empty body</p>
|
|
<p>
|
|
The <code>/say</code> endpoint allows you to perform TTS task using device's speakers or the
|
|
external ones connected to it via jack, Bluetooth etc. For example if you have some
|
|
old PC-speakers you are able to connect your device to them via line port and
|
|
get a complete speech-based notification system.
|
|
</p>
|
|
|
|
<h2>The <code>/wave</code> endpoint</h2>
|
|
<pre>
|
|
POST /wave
|
|
{
|
|
"text": "The text to be spoken",
|
|
"language": "en_US"
|
|
}
|
|
</pre>
|
|
<p><b>Returns:</b> <code>200 OK</code> with wave file (<code>Content-Type: audio/x-wav</code>)</p>
|
|
<p>
|
|
The <code>/wave</code> endpoint enables you to download a wav file containing speech of the
|
|
provided text. The goal of this endpoint is to provide interface allowing you establishment
|
|
of the connection between the TTS Server and some other kind of already running TTS system,
|
|
which can invoke the HTTP request to your Android device and do something with returned
|
|
wav file.
|
|
</p>
|
|
|
|
<h2>The <code>/sonos</code> endpoint</h2>
|
|
<pre>
|
|
POST /sonos
|
|
{
|
|
"text": "The text to be spoken",
|
|
"language": "en_US",
|
|
"zone": "Living room",
|
|
"volume": 60
|
|
}
|
|
</pre>
|
|
<p><b>Returns:</b> <code>202 Accepted</code> meaning that the request has been queued and waits
|
|
to be completed.</p>
|
|
<p>
|
|
The <code>/sonos</code> endpoint enables you to use your Sonos devices as a TTS speakers.
|
|
You need just to provide a text to be spoken and a desired zone name, where message is
|
|
supposed to be spoken. In the contrast to other endpoints, the <code>/sonos</code> endpoint
|
|
is non-blocking, which means your request is <b>accepted</b> and pushed at the end of
|
|
queue, where you are immediately given with response. The message waits in the queue to be
|
|
spoken protecting the Sonos device from messages race condition problem.
|
|
</p>
|
|
|
|
<h2>The <code>/sonos/{fileName}</code> endpoint</h2>
|
|
<pre>
|
|
GET /sonos/{fileName}
|
|
</pre>
|
|
<p><b>Returns: </b> <code>200 OK</code> with wave file (<code>Content-Type: audio/x-wav</code>)</p>
|
|
<p>
|
|
This endpoint is designed for serving synthesized wave files by <code>/sonos</code> endpoint
|
|
to Sonos devices and is not intended to be used directly by you. After hitting
|
|
the <code>/sonos</code> endpoint, requested message is synthesized to wave file which is being
|
|
served through the <code>/sonos/{fileName}</code> endpoint and Sonos device is requested to
|
|
change its source stream URL to this file. The already generated files are stored in cache
|
|
directory so there is no need to resynthesize frequently-used message which reduces
|
|
the overall time needed to complete the request. You are still able to invalidate
|
|
this cache via application settings.
|
|
</p>
|
|
</body>
|
|
</html> |