1//go:build go1.7
2// +build go1.7
3
4package transcribestreamingservice
5
6import (
7	"context"
8	"io"
9	"log"
10
11	"github.com/aws/aws-sdk-go/aws"
12	"github.com/aws/aws-sdk-go/aws/session"
13)
14
15func ExampleTranscribeStreamingService_StartStreamTranscription_streamAudio() {
16	sess, err := session.NewSession()
17	if err != nil {
18		log.Fatalf("failed to load SDK configuration, %v", err)
19	}
20
21	client := New(sess)
22	resp, err := client.StartStreamTranscription(&StartStreamTranscriptionInput{
23		LanguageCode:         aws.String(LanguageCodeEnUs),
24		MediaEncoding:        aws.String(MediaEncodingPcm),
25		MediaSampleRateHertz: aws.Int64(16000),
26	})
27	if err != nil {
28		log.Fatalf("failed to start streaming, %v", err)
29	}
30	stream := resp.GetStream()
31	defer stream.Close()
32
33	var audio io.Reader
34	// TODO Set audio to an io.Reader to stream audio bytes from.
35	go StreamAudioFromReader(context.Background(), stream.Writer, 10*1024, audio)
36
37	for event := range stream.Events() {
38		switch e := event.(type) {
39		case *TranscriptEvent:
40			log.Printf("got event, %v results", len(e.Transcript.Results))
41			for _, res := range e.Transcript.Results {
42				for _, alt := range res.Alternatives {
43					log.Printf("* %s", aws.StringValue(alt.Transcript))
44				}
45			}
46		default:
47			log.Fatalf("unexpected event, %T", event)
48		}
49	}
50
51	if err := stream.Err(); err != nil {
52		log.Fatalf("expect no error from stream, got %v", err)
53	}
54}
55