本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
以下示例使用适用于 Amazon Polly 的 iOS 软件开发工具包,借助从语音列表中选择的语音来读取指定文本。
此处显示的代码涵盖主要任务,但不处理错误。有关完整代码,请参阅AWS Mobile SDK for iOS Amazon Polly 演示
初始化
// Region of Amazon Polly. let AwsRegion = AWSRegionType.usEast1 // Cognito pool ID. Pool needs to be unauthenticated pool with // Amazon Polly permissions. let CognitoIdentityPoolId = "
YourCognitoIdentityPoolId
" // Initialize the Amazon Cognito credentials provider. let credentialProvider = AWSCognitoCredentialsProvider(regionType: AwsRegion, identityPoolId: CognitoIdentityPoolId) // Create an audio player var audioPlayer = AVPlayer()
获取可用语音的列表
// Use the configuration as default
AWSServiceManager.default().defaultServiceConfiguration = configuration
// Get all the voices (no parameters specified in input) from Amazon Polly
// This creates an async task.
let task = AWSPolly.default().describeVoices(AWSPollyDescribeVoicesInput())
// When the request is done, asynchronously do the following block
// (we ignore all the errors, but in a real-world scenario they need
// to be handled)
task.continue(successBlock: { (awsTask: AWSTask) -> Any? in
// awsTask.result is an instance of AWSPollyDescribeVoicesOutput in
// case of the "describeVoices" method
let voices = (awsTask.result! as AWSPollyDescribeVoicesOutput).voices
return nil
})
合成语音
// First, Amazon Polly requires an input, which we need to prepare.
// Again, we ignore the errors, however this should be handled in
// real applications. Here we are using the URL Builder Request,
// since in order to make the synthesis quicker we will pass the
// presigned URL to the system audio player.
let input = AWSPollySynthesizeSpeechURLBuilderRequest()
// Text to synthesize
input.text = "Sample text"
// We expect the output in MP3 format
input.outputFormat = AWSPollyOutputFormat.mp3
// Choose the voice ID
input.voiceId = AWSPollyVoiceId.joanna
// Create an task to synthesize speech using the given synthesis input
let builder = AWSPollySynthesizeSpeechURLBuilder.default().getPreSignedURL(input)
// Request the URL for synthesis result
builder.continueOnSuccessWith(block: { (awsTask: AWSTask<NSURL>) -> Any? in
// The result of getPresignedURL task is NSURL.
// Again, we ignore the errors in the example.
let url = awsTask.result!
// Try playing the data using the system AVAudioPlayer
self.audioPlayer.replaceCurrentItem(with: AVPlayerItem(url: url as URL))
self.audioPlayer.play()
return nil
})