amazon-transcribe


Nameamazon-transcribe JSON
Version 0.6.2 PyPI version JSON
download
home_pagehttps://github.com/awslabs/amazon-transcribe-streaming-sdk
SummaryAsync Python SDK for Amazon Transcribe Streaming
upload_time2023-06-15 16:13:19
maintainer
docs_urlNone
authorAmazon Web Services
requires_python>= 3.7
licenseApache License 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            ## Amazon Transcribe Streaming SDK

The Amazon Transcribe Streaming SDK allows users to directly interface with
the Amazon Transcribe Streaming service and their Python programs. The goal of
the project is to enable users to integrate directly with Amazon Transcribe
without needing anything more than a stream of audio bytes and a basic handler.

This project is still in early alpha so the interface is still subject to change
and may see rapid iteration. It's highly advised to pin to strict dependencies
if using this outside of local testing. Please note awscrt is a dependency shared
with botocore (the core module of AWS CLI and boto3). You may need to keep
amazon-transcribe at the latest version when installed in the same environment.


## Installation

To install from pip:
````bash
python -m pip install amazon-transcribe
````

To install from Github:
````bash
git clone https://github.com/awslabs/amazon-transcribe-streaming-sdk.git
cd amazon-transcribe-streaming-sdk
python -m pip install .
````

To use from your Python application, add `amazon-transcribe` as a dependency in your `requirements.txt` file.

NOTE: This SDK is built on top of the
[AWS Common Runtime (CRT)](https://github.com/awslabs/aws-crt-python), a collection of
C libraries we interact with through bindings. The CRT is available on PyPI
([awscrt](https://pypi.org/project/awscrt/)) as precompiled wheels for common platforms
(Linux, macOS, Windows). Non-standard operating systems may need to compile these
libraries themselves.

## Usage

### Prerequisites
If you don't already have local credentials setup for your AWS account, you can follow
this [guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
for configuring them using the AWS CLI.

In essence you'll need one of these authentication configurations setup in order for
the SDK to successfully resolve your API keys:

1. Set the `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and optionally the
`AWS_SESSION_TOKEN` environment variables
2. Set the `AWS_PROFILE` pointing to your AWS profile directory
3. Configure the `[default]` profile in `~/.aws/credentials`

For more details on the AWS shared configuration file and credential provider
usage, check the following developer guides:

* [Shared Config Overview](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)
* [Shared Config Format](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)
* [Example Credential Setups](https://docs.aws.amazon.com/sdkref/latest/guide/usage-examples.html)

### Quick Start
Setup for this SDK will require either live or prerecorded audio. Full details
on the audio input requirements can be found in the [Amazon Transcribe Streaming
documentation](https://docs.aws.amazon.com/transcribe/latest/dg/streaming.html).


Here's an example app to get started:
```python
import asyncio

# This example uses aiofile for asynchronous file reads.
# It's not a dependency of the project but can be installed
# with `pip install aiofile`.
import aiofile

from amazon_transcribe.client import TranscribeStreamingClient
from amazon_transcribe.handlers import TranscriptResultStreamHandler
from amazon_transcribe.model import TranscriptEvent
from amazon_transcribe.utils import apply_realtime_delay

"""
Here's an example of a custom event handler you can extend to
process the returned transcription results as needed. This
handler will simply print the text out to your interpreter.
"""


SAMPLE_RATE = 16000
BYTES_PER_SAMPLE = 2
CHANNEL_NUMS = 1

# An example file can be found at tests/integration/assets/test.wav
AUDIO_PATH = "tests/integration/assets/test.wav"
CHUNK_SIZE = 1024 * 8
REGION = "us-west-2"


class MyEventHandler(TranscriptResultStreamHandler):
    async def handle_transcript_event(self, transcript_event: TranscriptEvent):
        # This handler can be implemented to handle transcriptions as needed.
        # Here's an example to get started.
        results = transcript_event.transcript.results
        for result in results:
            for alt in result.alternatives:
                print(alt.transcript)


async def basic_transcribe():
    # Setup up our client with our chosen AWS region
    client = TranscribeStreamingClient(region=REGION)

    # Start transcription to generate our async stream
    stream = await client.start_stream_transcription(
        language_code="en-US",
        media_sample_rate_hz=SAMPLE_RATE,
        media_encoding="pcm",
    )

    async def write_chunks():
        # NOTE: For pre-recorded files longer than 5 minutes, the sent audio
        # chunks should be rate limited to match the realtime bitrate of the
        # audio stream to avoid signing issues.
        async with aiofile.AIOFile(AUDIO_PATH, "rb") as afp:
            reader = aiofile.Reader(afp, chunk_size=CHUNK_SIZE)
            await apply_realtime_delay(
                stream, reader, BYTES_PER_SAMPLE, SAMPLE_RATE, CHANNEL_NUMS
            )
        await stream.input_stream.end_stream()

    # Instantiate our handler and start processing events
    handler = MyEventHandler(stream.output_stream)
    await asyncio.gather(write_chunks(), handler.handle_events())


loop = asyncio.get_event_loop()
loop.run_until_complete(basic_transcribe())
loop.close()
```

## Security

See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.

## License

This project is licensed under the Apache-2.0 License.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/awslabs/amazon-transcribe-streaming-sdk",
    "name": "amazon-transcribe",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">= 3.7",
    "maintainer_email": "",
    "keywords": "",
    "author": "Amazon Web Services",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/df/1c/ca7de0b4735c63c455092b223191a4b31905a8e81b50aa906110a42528d5/amazon-transcribe-0.6.2.tar.gz",
    "platform": null,
    "description": "## Amazon Transcribe Streaming SDK\n\nThe Amazon Transcribe Streaming SDK allows users to directly interface with\nthe Amazon Transcribe Streaming service and their Python programs. The goal of\nthe project is to enable users to integrate directly with Amazon Transcribe\nwithout needing anything more than a stream of audio bytes and a basic handler.\n\nThis project is still in early alpha so the interface is still subject to change\nand may see rapid iteration. It's highly advised to pin to strict dependencies\nif using this outside of local testing. Please note awscrt is a dependency shared\nwith botocore (the core module of AWS CLI and boto3). You may need to keep\namazon-transcribe at the latest version when installed in the same environment.\n\n\n## Installation\n\nTo install from pip:\n````bash\npython -m pip install amazon-transcribe\n````\n\nTo install from Github:\n````bash\ngit clone https://github.com/awslabs/amazon-transcribe-streaming-sdk.git\ncd amazon-transcribe-streaming-sdk\npython -m pip install .\n````\n\nTo use from your Python application, add `amazon-transcribe` as a dependency in your `requirements.txt` file.\n\nNOTE: This SDK is built on top of the\n[AWS Common Runtime (CRT)](https://github.com/awslabs/aws-crt-python), a collection of\nC libraries we interact with through bindings. The CRT is available on PyPI\n([awscrt](https://pypi.org/project/awscrt/)) as precompiled wheels for common platforms\n(Linux, macOS, Windows). Non-standard operating systems may need to compile these\nlibraries themselves.\n\n## Usage\n\n### Prerequisites\nIf you don't already have local credentials setup for your AWS account, you can follow\nthis [guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)\nfor configuring them using the AWS CLI.\n\nIn essence you'll need one of these authentication configurations setup in order for\nthe SDK to successfully resolve your API keys:\n\n1. Set the `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and optionally the\n`AWS_SESSION_TOKEN` environment variables\n2. Set the `AWS_PROFILE` pointing to your AWS profile directory\n3. Configure the `[default]` profile in `~/.aws/credentials`\n\nFor more details on the AWS shared configuration file and credential provider\nusage, check the following developer guides:\n\n* [Shared Config Overview](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)\n* [Shared Config Format](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)\n* [Example Credential Setups](https://docs.aws.amazon.com/sdkref/latest/guide/usage-examples.html)\n\n### Quick Start\nSetup for this SDK will require either live or prerecorded audio. Full details\non the audio input requirements can be found in the [Amazon Transcribe Streaming\ndocumentation](https://docs.aws.amazon.com/transcribe/latest/dg/streaming.html).\n\n\nHere's an example app to get started:\n```python\nimport asyncio\n\n# This example uses aiofile for asynchronous file reads.\n# It's not a dependency of the project but can be installed\n# with `pip install aiofile`.\nimport aiofile\n\nfrom amazon_transcribe.client import TranscribeStreamingClient\nfrom amazon_transcribe.handlers import TranscriptResultStreamHandler\nfrom amazon_transcribe.model import TranscriptEvent\nfrom amazon_transcribe.utils import apply_realtime_delay\n\n\"\"\"\nHere's an example of a custom event handler you can extend to\nprocess the returned transcription results as needed. This\nhandler will simply print the text out to your interpreter.\n\"\"\"\n\n\nSAMPLE_RATE = 16000\nBYTES_PER_SAMPLE = 2\nCHANNEL_NUMS = 1\n\n# An example file can be found at tests/integration/assets/test.wav\nAUDIO_PATH = \"tests/integration/assets/test.wav\"\nCHUNK_SIZE = 1024 * 8\nREGION = \"us-west-2\"\n\n\nclass MyEventHandler(TranscriptResultStreamHandler):\n    async def handle_transcript_event(self, transcript_event: TranscriptEvent):\n        # This handler can be implemented to handle transcriptions as needed.\n        # Here's an example to get started.\n        results = transcript_event.transcript.results\n        for result in results:\n            for alt in result.alternatives:\n                print(alt.transcript)\n\n\nasync def basic_transcribe():\n    # Setup up our client with our chosen AWS region\n    client = TranscribeStreamingClient(region=REGION)\n\n    # Start transcription to generate our async stream\n    stream = await client.start_stream_transcription(\n        language_code=\"en-US\",\n        media_sample_rate_hz=SAMPLE_RATE,\n        media_encoding=\"pcm\",\n    )\n\n    async def write_chunks():\n        # NOTE: For pre-recorded files longer than 5 minutes, the sent audio\n        # chunks should be rate limited to match the realtime bitrate of the\n        # audio stream to avoid signing issues.\n        async with aiofile.AIOFile(AUDIO_PATH, \"rb\") as afp:\n            reader = aiofile.Reader(afp, chunk_size=CHUNK_SIZE)\n            await apply_realtime_delay(\n                stream, reader, BYTES_PER_SAMPLE, SAMPLE_RATE, CHANNEL_NUMS\n            )\n        await stream.input_stream.end_stream()\n\n    # Instantiate our handler and start processing events\n    handler = MyEventHandler(stream.output_stream)\n    await asyncio.gather(write_chunks(), handler.handle_events())\n\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(basic_transcribe())\nloop.close()\n```\n\n## Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "Async Python SDK for Amazon Transcribe Streaming",
    "version": "0.6.2",
    "project_urls": {
        "Homepage": "https://github.com/awslabs/amazon-transcribe-streaming-sdk"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e27d9424134095bbff76022725f789dc1e3cd28e70e7229ac3da6c89fdb02d16",
                "md5": "33636f997d2443a5aa61b4883f9c046a",
                "sha256": "29c7cab0f84d642eed2468b276991ecd87fc1224d9c7fd158ea336f14ae66538"
            },
            "downloads": -1,
            "filename": "amazon_transcribe-0.6.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "33636f997d2443a5aa61b4883f9c046a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">= 3.7",
            "size": 38769,
            "upload_time": "2023-06-15T16:13:17",
            "upload_time_iso_8601": "2023-06-15T16:13:17.283568Z",
            "url": "https://files.pythonhosted.org/packages/e2/7d/9424134095bbff76022725f789dc1e3cd28e70e7229ac3da6c89fdb02d16/amazon_transcribe-0.6.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "df1cca7de0b4735c63c455092b223191a4b31905a8e81b50aa906110a42528d5",
                "md5": "7c7d46a7be2470b7fb93ba5a3245b57b",
                "sha256": "2d57e7590adc782a1f52b06be38e4e7d9e07e1fe8b22c53933bf99f625375109"
            },
            "downloads": -1,
            "filename": "amazon-transcribe-0.6.2.tar.gz",
            "has_sig": false,
            "md5_digest": "7c7d46a7be2470b7fb93ba5a3245b57b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">= 3.7",
            "size": 31042,
            "upload_time": "2023-06-15T16:13:19",
            "upload_time_iso_8601": "2023-06-15T16:13:19.279724Z",
            "url": "https://files.pythonhosted.org/packages/df/1c/ca7de0b4735c63c455092b223191a4b31905a8e81b50aa906110a42528d5/amazon-transcribe-0.6.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-15 16:13:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "awslabs",
    "github_project": "amazon-transcribe-streaming-sdk",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "amazon-transcribe"
}
        
Elapsed time: 0.09773s