Python语音合成(日文翻译)

Python021

Python语音合成(日文翻译),第1张

原文:

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的算法是一种相位恢复方法。 通过比较合成语音和自然语音的瞬时相位(相位的时间微分),我们可以直观地看到相位恢复是否按预期进行。

anaconda建立环境 python=3.7.9

切换到虚拟环境里

安装pyaudio

这个库好像只能播放.wav文件

而且wav文件内部有不同的格式 我们需要sox转换格式

sox在python里安装 pip install sox

注意 这是sox和python的接口 真正的sox文件得自己装一下

装完了还得配置环境变量

sox资源安排:

https://pan.baidu.com/s/1ar8wQc1Xdml9BJpuJ-ubrg

安装完后,就可以转换wav的内部格式了

在音乐文件路径下打开cmd或者powershell执行

sox voice.wav -b 16 -e signed-integer 00.wav

可以看到由voice.wav生成了新的文件 00.wav

Pydub可以让你用简单的方式处理音频。

Pydub提供了简洁的高层接口,极大的扩展了python处理音频文件的能力。

GitHub链接: pydub-github

GitHub:

pydub的使用必须安装对应的依赖软件 ffmpeg 或 avconv

验证是否安装成功:

Open a WAV file

Open a mp3 file

Open a other file

切割音频

分贝操作

分贝(decibel)是量度两个相同单位之数量比例的计量单位,主要用于度量声音强度,常用dB表示。

音频链接

将一个文件添加到另一个文件的末尾

音频长度

淡入淡出

重复音频

再次淡入淡出

直接保存

所有ffmpeg支持的都支持

用标签保存结果(元数据)

实例:

将mp3文件转换成wav文件:

Python音频处理库 pydub