Harsh Singh
Harsh Singh

Reputation: 11

can you use the Amazon Transcribe medical model by using amazon-transcribe 0.6.2 python sdk?

So I wanted to use the Amazon Transcribe Medical model for streaming in Python. Is there any SDK which makes it possible for me to stream this? I looked at boto as well, but it only involves batching not streaming. I was only able to find this but not sure how to use Amazon Transcribe medical in this SDK.


import asyncio import sounddevice from amazon_transcribe.client import TranscribeStreamingClient

from amazon_transcribe.handlers import TranscriptResultStreamHandler from amazon_transcribe.model import TranscriptEvent import boto3 from botocore.credentials import Credentials


class MyEventHandler(TranscriptResultStreamHandler):
    async def handle_transcript_event(self, transcript_event: TranscriptEvent):
        results = transcript_event.transcript.results
        for result in results:
            for alt in result.alternatives:
                print(alt.transcript)



async def mic_stream():
    loop = asyncio.get_event_loop()
    input_queue = asyncio.Queue()

    def callback(indata, frame_count, time_info, status):
        loop.call_soon_threadsafe(input_queue.put_nowait, (bytes(indata), status))

    stream = sounddevice.RawInputStream(
        channels=1,
        samplerate=16000,
        callback=callback,
        blocksize=1024 * 2,
        dtype="int16",
    )
    with stream:
        while True:
            indata, status = await input_queue.get()
            yield indata, status


async def write_chunks(stream):
    async for chunk, status in mic_stream():
        await stream.input_stream.send_audio_event(audio_chunk=chunk)
    await stream.input_stream.end_stream()


async def basic_transcribe():
    region = "us-east-1"


    # Initialize the TranscribeStreamingClient with the async credentials provider
    client = TranscribeStreamingClient(
        region=region
          )

    # Start the transcription stream
    stream = await client.start_stream_transcription(
        language_code="en-US",
        media_sample_rate_hz=16000,
        media_encoding="pcm"
    )

    handler = MyEventHandler(stream.output_stream)
    await asyncio.gather(write_chunks(stream), handler.handle_events())


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(basic_transcribe())
    loop.close()

Upvotes: 0

Views: 53

Answers (0)

Related Questions