Transcription Normalization
Phonexia transcription-normalization is a tool for normalization of the transcription of Phonexia speech-to-text 6th generation. The microservice takes transcription as an input and returns the normalized transcription, including converted numbers, dates, etc. in textual form to numeric (e.g. twenty-four -> 24), and/or added punctuation and characters capitalization. To learn more, visit the technology's home page.
Installation
- Docker image
- Docker compose
- Helm chart
Getting Transcription Normalization docker image
You can easily obtain the Transcription Normalization docker image from docker hub. Just run:
docker pull phonexia/transcription-normalization:latest
Running the image
Docker
You can start the microservice and list all the supported options by running:
docker run --rm -it phonexia/transcription-normalization:latest --help
The output should look like this:
Usage: transcription-normalization [OPTIONS]
You can use environment variables in format PHX_<OPTION_NAME> instead of
command line arguments.
Options:
-m, --model PATH Path to a model file. [required]
-l, --log_level [fatal|error|warning|info|debug]
Logging level.
--log_format [human|json] Logging format.
-a, --listening_address TEXT Address where the server will listen. The
address '[::]' also accepts IPv4
connections.
-p, --port INTEGER RANGE Port on which the server will be listening.
[1<=x<=65535]
--help Show this message and exit.
The model and license_key options are required. To obtain the model and license, contact Phonexia.
You can specify the options either via command line arguments or via environmental variables.
Run the container with the mandatory parameters:
docker run --rm -it -v /opt/phx/models:/models -p 8080:8080 /phonexia/transcription-normalization:latest --model /models/transcription_normalization-generic-1.0.0.model --license_key ${license-key}
Replace the /opt/phx/models
, transcription_normalization-generic-1.0.0.model
and license-key
with the corresponding values.
With this command, the container will start, and the microservice will be listening on port 8080 on localhost.
Docker compose
Create a docker-compose.yml
file:
version: '3'
services:
transcription-normalization:
image: phonexia/transcription-normalization:latest
environment:
- PHX_MODEL_PATH=/models/transcription_normalization-generic-1.0.0.model
- PHX_LICENSE_KEY=<license-key>
ports:
- 8080:8080
volumes:
- ./models:/models/
Create a models
folder in the same directory as the docker-compose.yml
file and place a model file in it. Replace <license-key>
with your license key and transcription_normalization-generic-1.0.0.model
with the actual name of a model.
The model and license_key options are required. To obtain the model and license, contact Phonexia.
You can than start the microservice by running:
$ docker compose up
The optimal way for large scale deployment is by using container orchestration system. Take a look at out Helm chart deployment page for deployment using Kubernetes.
Microservice communication
gRPC API
For communication, our microservices use gRPC, which is a high-performance, open-source Remote
Procedure Call (RPC
) framework that enables efficient communication between distributed systems using a variety of programming languages. We use an interface definition language to specify a common interface and contracts between components. This is primarily achieved by specifying methods with parameters and return types.
Take a look at our gRPC API documentation. The transcription-normalization microservice defines a TranscriptionNormalization
service with remote procedure called Normalize
. This procedure normalizes the text segments. It accepts an argument (also referred to as "message") called NormalizeRequest
containing array of segments. This NormalizeRequest
argument is streamed, meaning that it may be received in multiple requests, each containing some of the segments. Once all requests have been received and processed, the Normalize
procedure returns a message called NormalizeResponse
which consists of the normalized segments
.
Connecting to microservice
There are multiple ways how you can communicate with our microservices.
- Generated library
- Python client
- grpcurl client
- GUI clients
Using generated library
The most common way how to communicate with the microservices is via a programming language using a generated library.
Python library
If you use Python as your programming language, you can use our official gRPC Python library.
To install the package using pip
, run:
pip install phonexia-grpc
You can then import:
- Specific libraries for each microservice that provide the message wrappers.
- stubs for the
gRPC
clients.
from phonexia.grpc.technologies.transcription_normalization.v1.transcription_normalization_pb2 import (
NormalizeConfig,
NormalizeRequest,
NormalizeResponse,
Segment,
Word,
)
from phonexia.grpc.technologies.transcription_normalization.v1.transcription_normalization_pb2_grpc import TranscriptionNormalizationStub
Generate library for programming language of your choice
For the definition of microservice interfaces, we use the standard way of protocol buffers. The services
, together with the procedures
and messages
that they expose, are defined in the so-called proto
files.
The proto
files can be used to generate client libraries in many programming languages. Take a look at protobuf tutorials for how to get started with generating the library in the languages of your choice using the protoc
tool.
You can find the proto
files developed by Phonexia in this repository.
Phonexia Python client
The easiest way to get started with testing is to use our simple Python client. To get it, run:
pip install phonexia-transcription-normalization-client
After the successful installation, run the following command to see the client options:
transcription_normalization_client --help
grpcurl client
If you need a simple tool for testing the microservice on cmd line, you can use grpcurl. This tool will serialize and send a body that we define in json to an endpoint that we specify.
The body for grpcurl
should look somewhat like this:
{
"segments": [
{
"text": "hello world",
"start_time": "0.000s",
"end_time": "1.000s",
"words": [
{
"text": "hello",
"start_time": "0.000s",
"end_time": "0.500s"
},
{
"text": "world",
"start_time": "0.500s",
"end_time": "1.000s"
}
]
},
...
]
}
Create such a request body and save it to a file.
Now you can make the request. The microservice supports reflection. That means that you don't need to know the API in advance to make a request.
grpcurl -plaintext -use-reflection -d @ localhost:8080 phonexia.grpc.technologies.transcription_normalization.v1.TranscriptionNormalization/Normalize < ${path_to_body}
The grpcurl
automatically serializes the response to this request into JSON.
GUI clients
If you'd prefer to use a GUI client like Postman or Warthog to test the microservice, take a look at the GUI Client page in our documentation. Note that you will still need to convert the audio into the Base64 format manually as those tools do not support it by default either.
Further links
- Maintained by Phonexia
- Contact us via e-mail, or using Phonexia Service Desk
- File an issue
- See list of licenses
- See terms of use
Versioning
We use Semantic Versioning.