Python语音合成(日文翻译)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python语音合成(日文翻译)相关的知识,希望对你有一定的参考价值。

参考技术A

原文:

Python version

ttslearn のインストール

ttslearn の动作确认

パッケージのインポート

描画周りの设定

NumPy と Torch を用いた配列の作成

numpy.ndarray と torch.Tensor のインタフェースの违い

numpy.ndarray と torch.Tensor の相互変换

numpy.ndarray と torch.Tensor のメモリ共有

scipy.io.wavfile を利用した音声ファイルの読み込み

音声の可视化

窓関数

短时间フーリエ変换の実装

短时间フーリエ変换の结果の可视化

librosa.stft を用いた短时间フーリエ変换
librosa.stftは、STFTを実行する前にデフォルトで信号の冒头と末尾にパディング処理を行います。前述のSTFT実装はこの処理をサポートしていないため、同等のSTFTの结果を得るためには、center=Falseとしてパディング処理を行わないように设定します。

时间解像度と周波数解像度のトレードオフ

逆短时间フーリエ変换による音声の复元

メルフィルタバンク

メルスペクトログラムの计算

Griffin-Lim のアルゴリズムに基づく位相复元

瞬时周波数の可视化 (bonus)
Griffin-Limのアルゴリズムは、位相复元手法です。合成音声と自然音声の瞬时位相(位相の时间微分)を比较することで、位相复元が期待通り行われているかを视覚的に确认できます。

翻译:

Python 版本

ttslearn 的安装

ttslearn 的操作确认

导入程序包

设置绘图格式

使用NumPy和Torch创建数组

numpy.ndarray和torch.Tensor之间的接口差异

numpy.ndarray和torch.Tensor的相互转换

numpy.ndarray和torch.Tensor的内存共享

使用scipy.io.wavfile读取音频文件

语音可视化

窗函数

短时傅立叶变换的实现

短时傅立叶变换结果的可视化

使用librosa.stft的短时傅立叶变换
缺省情况下,librosa.stft在执行STFT(短时傅里叶变换)之前会对信号的开头和结尾进行填充。 由于上面提到的STFT实现不支持此操作,因此要获得等效的STFT结果,请将填充操作设置为center=False。

在时间分辨率和频率分辨率间权衡取舍

通过逆短时傅立叶变换进行语音的复原

邮件过滤器组

计算质谱图

基于Griffin-Lim算法的相位复原

瞬时频率可视化(bonus)
Griffin-Lim的算法是一种相位恢复方法。 通过比较合成语音和自然语音的瞬时相位(相位的时间微分),我们可以直观地看到相位恢复是否按预期进行。

「微信同声传译」小程序插件:快速实现语音转文字文本翻译语音合成等能力

上期,我们在《「医院 LBS 位置服务」插件:输出LBS室内位置能力,为改善就医服务提供解决方案》一文中介绍了「医院 LBS 位置服务」小程序插件的意义、使用场景以及使用方法。

今天我们为大家推荐的插件是「微信同声传译」,如果你想在小程序中拥有快速实现语音转文字、文本翻译、语音合成等能力,那么「微信同声传译插件」是你的不二选择。接下来,我们将从使用场景到使用方法,为你作出详细的介绍。

「微信同声传译」插件能做什么?

今天我们说到的「微信同声传译」插件,是由微信智聆语音团队、微信翻译团队与公众平台联合推出的同传开放接口,可通过语音转文字、文本翻译、语音合成接口,为开发者赋能。值得一提的是,在原有功能的基础上,插件还新增了对粤语语音识别的支持

通过这个插件,插件使用者可以轻松实现语音读取识别、文本转语音和中英文文本转换,避免这类需求的重复开发工作。

小程序「面对面翻译」便使用了插件中的接口能力,并将其开源以帮助开发者快速开发,有兴趣的读者可以体验小程序 ??

技术图片

「面对面翻译」小程序码

「微信同声传译」插件的使用场景

场景一:英语口语、听力双管齐下,没有外教也能学好英语!

把「微信同声传译」插件放在小程序里,既可以将口语转为文字,也可以帮助用户判断发音是否标准纯正,是最佳听众和英语学习道路上的良师益友。

场景二:出国旅游,英语蹩脚怎么办?

这时可以把「微信同声传译」插件应用到翻译小程序里,说中文,译英文,再也不怕出国交流难。

场景三:看剧时想要吐槽!可是手里有零食,打字不方便怎么办?

只要在小程序里有「微信同声传译」插件,用户就可以按住按钮说话,语音转文字,发送弹幕!

如何接入「微信同声传译」插件?

「微信同声传译」的功能强大,使用起来却十分简单:

一、添加插件

1.申请使用插件。在「小程序管理后台 - 设置 - 第三方服务 - 插件管理」中查找插件名称「微信同声传译」(目前最新版本:0.2.2,appid:wx069ba97219f66d99),并申请使用。

2.引入插件代码后修改配置文件 JSON:

// app.json
{
  ...
  "plugins": {
    ...
    "WechatSI": {
      "version": "0.2.2",
      "provider": "wx069ba97219f66d99"
  }
}

3.接下来,在 index.js 引入插件,获取全局唯一的语音识别管理器 recordRecoManager

// index.jsconst plugin = requirePlugin("WechatSI")const manager = plugin.getRecordRecognitionManager()

二、语音输入

如果你希望做到的效果是按住某个按钮,开始识别语音,松开按钮就结束识别,那你需要进行以下步骤的操作。

<view  catchtouchstart="streamRecord" catchtouchend="endStreamRecord">中文view>
// index.jsPage({
  data: {},
  streamRecord: function() {
    manager.start({
      lang: ‘zh_CN‘,
    })
  },
  streamRecordEnd: function() {
    manager.stop()
  }
})

三、绑定录音回调事件

<view>语音识别内容:{{currentText}}view>
// page.jsPage({
  data: {
    currentText: ‘‘,
  },
  initRecord: function() {    //有新的识别内容返回,则会调用此事件
    manager.onRecognize = (res) => {      let text = res.result      this.setData({
        currentText: text,
      })
    }    // 识别结束事件
    manager.onStop = (res) => {      let text = res.result      if(text == ‘‘) {        // 用户没有说话,可以做一下提示处理...
        return
      }      this.setData({
        currentText: text,
      })      // 得到完整识别内容就可以去翻译了
      this.translateTextAction()
    }
  },
  translateTextAction: function() {},
  onLoad: function() {    this.initRecord()
  }
})

四、文本翻译

<view>翻译结果:{{translateText}}view>
// page.jsPage({
  data: {
    currentText: ‘‘,
    translateText: ‘‘,
  },
  translateTextAction: function() {    let lfrom =  ‘zh_CN‘
    let lto = ‘en_US‘
    plugin.translate({
      lfrom: lfrom,
      lto: lto,
      content: this.data.currentText,
      tts: true, // 需要合成语音
      success: (resTrans)=>{        // 翻译可以得到 翻译文本,翻译文本的合成语音,合成语音的过期时间
        let text = resTrans.result        this.setData({
          translateText: text,
        })        // 得到合成语音让它自动播放出来
        wx.playBackgroundAudio({
          dataUrl: resTrans.filename,
          title: ‘‘,
        })
      },
    })
  },
})

五、语音合成

plugin.translate 得到的语音文件具有过期时间,可以下载到本地使用。

如果像「面对面翻译」小程序一样需要存比较多历史记录的话,也可以选择过期之后调用 plugin.textToSpeech 接口再去重新合成一次。

plugin.textToSpeech({
    lang: ‘zh_CN‘,
    content: ‘我想重新进行语音合成‘,
    success: resTrans => {      // 可以重新得到语音合成文件和过期时间
    },
})

如果你想了解更多「微信同声传译」插件详情,欢迎访问开发者社区插件版块相应页面(建议电脑访问):

??https://mp.weixin.qq.com/wxop...

手机端用户也可以扫码访问 ??

技术图片

内容来自:微信开放社区《小程序·小故事》栏目
原作者:谢滔、黄嘉敏
任何问题,欢迎前往微信开放社区:https://developers.weixin.qq.com

了解更多小程序开发相关内容,欢迎微信扫描下方二维码关注微信极客WeGeek公众号,共筑微信生态。
技术图片

以上是关于Python语音合成(日文翻译)的主要内容,如果未能解决你的问题,请参考以下文章

python腾讯语音合成

首次开源 一行代码中英文语音识别合成翻译核心功能

首次开源!一行代码轻松搞定中英文语音识别合成翻译核心功能!

微信小程序之文本合成语音朗读及长文本分段播放处理

Python语音交互的实现

利用Python打造一个语音合成系统