利用AWS无服务架构之语音合成

  

一、架构图

  

利用AWS无服务架构之语音合成

  

利用AWS无服务架构之语音合成

  
      <李>用户通过前段网页输入文字,通过后台一系列服务转换成语音,并在前段展示,并提供下载功能,整个服务没有使用一台服务器!李   <李>用户输入文字进行提交;李   <李>页面通过API代码把信息传递给Lamdba函数NewPost写入DynamoDB,并把postId传递给SNS;李   <李> SNS把postId传递给λ函数转换,函数转换通过postId去DynamoDB查询文本数据,并调用波利进行语音合成;李   <李>函数转换把合成的语音文件存入S3中,更更新数据库状态,李   <李>用户就可以通过得到去获取语音合成的相关信息。   
  

二、服务部署

  

2.1,创建DynamoDB表

  

很简单,写个表名,写个主键即可,其他默认。

  

<强>表名:文章
:<强>主键id

  

2.2,创建S3

  

我们创建两个S3存储桶,一个用来存放静态网页,一个用来存放语音合成的音频。

  

2.2.1静态网页存储桶

  
      <李>名称大家随意确定,我这里起的名字为pollywebsite;李   <李>打开公共访问权限;李   <李>启用静态网站托管功能,李   <李>添加存储桶策略,以便公共用户可以访问,策略如下:李   
  
 <代码> {
  “版本”:“2012-10-17”,
  “Id”:“Policy1562738599054”,
  “声明”:[
  {
  “席德”:“Stmt1562738571491”,
  “效应”:“允许”,
  “主要”:“*”,
  “行动”:“s3: GetObject”,
  “资源”:“在攻击:aws: s3::: wz-pollywebsite/*”
  }
  ]
  } 
  2.2.2

,音频存储桶

  
      <李>名字大家随意定,我这里起名字为pollyaudio;李   <李>打开公共访问权限。   
  

2.3,创建SNS话题/h3>   
      <李>名称大家随意定,我这里起名字为new_posts。   
  

2.4,为λ创建权限

  

从架构图得知,我们的λ函数和多个组件进行交互,需要有相关的权限才行,我们通过我为其创建一个角色。

  
      <李>在选择的服务使用此角色处选择λ;李   <李>先不用添加政策,先创建好角色;李   <李>角色名大家可以随意写,我这里起名为LamdbaPostsReaderRole;李   <李>为角色添加内联政策策略规则如下:李   
  
 <代码> {
  “版本”:“2012-10-17”,
  “声明”:[
  {
  “席德”:“VisualEditor0”,
  “效应”:“允许”,
  “行动”(
  “s3: propertynames”,
  “宝利:SynthesizeSpeech”,
  “日志:CreateLogStream”,
  “sns:发布”,
  “dynamodb: PutItem”,
  “dynamodb:扫描”,
  “dynamodb:查询”,
  “dynamodb: UpdateItem”,
  “s3: GetBucketLocation”,
  “日志:CreateLogGroup”,
  “日志:PutLogEvents”,
  “s3: PutObjectAcl”
  ),
  “资源”:“*”
  }
  ]
  } 
  

2.5,创建λNewPost

  
      <李>函数名大家自己随意写,我这里写wz_NewPost;李   <李>运行环境大家选择Python 3.7。   <李>填写好相关的Python代码,并配置好代码环境变量;李   <李>为函数指定我们前面创建的角色。   
  

2.6,创建λ的GetPosts

  
      <李>函数名大家自己随意写,我这里写wz_GetPosts;李   <李>运行环境大家选择Python 3.7。   <李>填写好相关的Python代码,并配置好代码环境变量;李   <李>为函数指定我们前面创建的角色。   
  

2.7,创建λ

转换   
      <李>函数名大家自己随意写,我这里写wz_ConvertToAudio;李   <李>运行环境大家选择Python 3.7。   <李>填写好相关的Python代码,并配置好代码环境变量;李   <李>为函数指定我们前面创建的角色,李   <李>这个函数耗时比较长,可以把函数执行时间调整为一分钟,李   <李>添加我们创建的SNS为触发器。   
  

2.8,创建API网关/h3>   
      <李> API名称大家随意写,我这里写PostReaderAPI,风格为休息;李   <李>创建一个让方法,选择<代码> wz_GetPosts 函数,添加URL查询字符串参数;李   

    利用AWS无服务架构之语音合成