diff options
Diffstat (limited to 'python-amazon-transcribe.spec')
| -rw-r--r-- | python-amazon-transcribe.spec | 514 |
1 files changed, 514 insertions, 0 deletions
diff --git a/python-amazon-transcribe.spec b/python-amazon-transcribe.spec new file mode 100644 index 0000000..92cb75a --- /dev/null +++ b/python-amazon-transcribe.spec @@ -0,0 +1,514 @@ +%global _empty_manifest_terminate_build 0 +Name: python-amazon-transcribe +Version: 0.6.1 +Release: 1 +Summary: Async Python SDK for Amazon Transcribe Streaming +License: Apache License 2.0 +URL: https://github.com/awslabs/amazon-transcribe-streaming-sdk +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/1b/6c/33721098ae6b8db72e68fd610b6aa4b1713a05ea0ed38f26287660ac981c/amazon-transcribe-0.6.1.tar.gz +BuildArch: noarch + +Requires: python3-awscrt + +%description +## 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. + + + + +%package -n python3-amazon-transcribe +Summary: Async Python SDK for Amazon Transcribe Streaming +Provides: python-amazon-transcribe +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-amazon-transcribe +## 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. + + + + +%package help +Summary: Development documents and examples for amazon-transcribe +Provides: python3-amazon-transcribe-doc +%description help +## 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. + + + + +%prep +%autosetup -n amazon-transcribe-0.6.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-amazon-transcribe -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.1-1 +- Package Spec generated |
