零基础微软AI文本转语音

[MD] © Sunplace,2024

引言

  • 无需搭建服务器
  • 无需代码
  • 无需成本

1. 安装Microsoft Egde浏览器

https://azure.microsoft.com/zh-cn/free

Microsoft Azure规定,这是使用语音创作的先决条件之一。

先用Microsoft Edge的大声朗读功能读一遍文章,确定多音字、英文缩写等的发音是否正确。多音字可以用同音字替换,英文也可以用中文谐音替换。得到清洗后的发音文稿。

2. 创建Microsoft账户

3. 创建Microsoft Azure免费订阅

2.1 使用微软账户登陆https://azure.microsoft.com/zh-cn/free

2.2 验证信用卡,获取免费订阅,无需信用卡的版本

https://azure.microsoft.com/zh-cn/free/students/

前提你拥有学生资格。

学生额度:$100

普通用户额度:$200

3. 登陆Microsoft Azure

https://azure.microsoft.com/zh-cn/free

大陆地区登陆需要很久…

4. 创建应用

4.1 访问:https://portal.azure.com/#home

4.2 创建语音服务

资源组初始时没有,需要新建一个,随便取一个名称

定价层参考:https://azure.microsoft.com/zh-cn/pricing/details/cognitive-services/speech-services/

5. 使用文字转语音

5.1 转到Speech Studio

文本转语音项目组中,找到有声内容创作

5.2 点击我的文件

上传txt文本文件或者创建,每个文件不能超过 20000 个字符,超过了系统自动拆分为多个文件。导出时可以选择按段落或者按拆分后的文件个数导出,不能自动合并。

5.3 打开已经上传的文件

在右侧调音(可按喜好选择):

  • 语言:中文(普通话,简体)
  • 角色:晓伊
  • 说话风格:温柔
  • 发音-朗读规则:数字(.)

直接播放也会消耗额度。

5.4 调整完成后点击保存

5.5 点击导出

选择导出到本地磁盘

音频格式可选wav或mp3

本次用例备注

  • 全文字数: 24674
  • 消费额度: ¥ 20.77
  • 导出总时长: 约 1:25:00
  • 导出文件数: 2

导出的音频也不是完全正常的,用例有多处卡顿。所以大量文字需要试听以识别。

acme.sh部署、续期、吊销

© Sunplace,2024 本文使用的是ZeroSSL的ECC证书
# 安装acme.sh
curl https://get.acme.sh | sh
# 设置自动更新
acme.sh --upgrade --auto-upgrade
# 设置ZeroSSL
acme.sh --set-default-ca --server zerossl
# 设置Cloudflare参数
export CF_Key="Cloudflare的Global API Key"
export CF_Email="CF账户"
# 注册用户
acme.sh --register-account -m ZeroSSL账户邮箱 --server zerossl
# 申请证书(Cloudflare DNS)
acme.sh --dns dns_cf --issue -d 域名或泛域名 --nginx
# 更新证书(强制)
acme.sh --renew -d 域名或泛域名 --force --ecc
# 域名或泛域名 is not a issued domain, skip.
# 解决方法:acme.sh --dns dns_cf --issue -d 域名或泛域名
# 吊销证书
acme.sh --revoke -d 域名或泛域名 --ecc
# Cert for 域名或泛域名 /root/.acme.sh/域名或泛域名_ecc/域名或泛域名.cer is not found, skip.
# 解决方法:acme.sh --install-cert -d 域名或泛域名 --ecc
# 删除证书
acme.sh --remove -d 域名或泛域名 --ecc
关于吊销的补充说明: 1. acme.sh无法吊销没有安装在本地的ZeroSSL证书。 3. 如遇到证书泄露,必须进行吊销的情况,可以直接申请新的证书。

非root密钥登陆ssh

ssh-keygen -t rsa -C "xxx@domain" 
# 将生成的密钥放到相应的位置
mkdir /home/username/.ssh 
touch /home/username/.ssh/authorized_keys
# Enter file in which to save the key (/root/.ssh/id_rsa):/home/username/.ssh/id_rsa
cd /home/username/.ssh
cat id_rsa.pub > authorized_keys
# 修改权限
cd ..
chown -R username:username .ssh 
chmod -R 700 .ssh
chmod 600 .ssh/authorized_keys
登陆的用户名为:username 登陆的密钥为/home/username/.ssh/id_rsa的内容

arm宝塔面板安装Nginx防火墙后导致Nginx报错

[MD]

错误场景

在甲骨文VPS(Oracle Cloud)中的arm服务器,安装宝塔面板的Nginx防火墙,会导致之前安装的nginx重启报错unknown directive "lua_shared_dict"

原因分析

这个功能应该是和面板上面的编译安装中出现的自定义模块有关,但是并不妨碍我们使用这个功能来实现自动编译和加载 LuaJIT。

解决方法

1.在 /www/server/panel/install 分别创建名字为nginx_prepare.shnginx_configure.pl的文件,然后将两个文件的权限设置为600并且将所有者设置为root

nginx_prepare.sh 的内容

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
  
wget -c -O LuaJIT-2.1.zip https://github.com/LuaJIT/LuaJIT/archive/refs/heads/v2.1.zip -T 10
unzip LuaJIT-2.1.zip
if [ -e LuaJIT-2.1 ]; then
    cd LuaJIT-2.1
    make linux
    make install
    export LUAJIT_LIB=/usr/local/lib
    export LUAJIT_INC=/usr/local/include/luajit-2.1/
    ln -sf /usr/local/lib/libluajit-5.1.so.2 /usr/local/lib64/libluajit-5.1.so.2
    if [ `grep -c /usr/local/lib /etc/ld.so.conf` -eq 0 ]; then
        echo "/usr/local/lib" >> /etc/ld.so.conf
    fi
    ldconfig
    cd ..
fi
rm -rf LuaJIT-2.1*

提醒:直接复制粘贴可能存在回车符,如果遇到编译失败请使用sed -i 's/\r//g' /www/server/panel/install/nginx_prepare.sh删除回车符。

nginx_configure.pl 的内容

--add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module

这里的LuaJIT源码来自GitHub
关于缺失的jemalloc,原作者经过测试需要 5.1.0 以上的版本才可以让Nginx 1.20.x正常编译,加载 jemalloc 之后单个 Nginx 的进程内存占用高达 2G(虽然这台 ARM 有 32G 的内存),所以放弃这个模块,如果你需要用到,就将下面代码追加到nginx_prepare.sh文件中。

if [ ! -f '/usr/local/lib/libjemalloc.so' ]; then
    wget -O jemalloc-5.2.1.tar.bz2 ${download_Url}/src/jemalloc-5.2.1.tar.bz2
    tar -xvf jemalloc-5.2.1.tar.bz2
    cd jemalloc-5.2.1
    ./configure
    make && make install
    ldconfig
    cd ..
    rm -rf jemalloc*
fi

同时在nginx_configure.pl追加一个空格后追加--with-ld-opt=-ljemalloc

2.最后在面板升级一下 Nginx,或者终端执行下面命令重新编译 Nginx,之后就可以愉快使用 LuaJIT 了。

cd /www/server/panel/install && bash install_soft.sh 0 update nginx 1.22

运行之前你需要稍作修改,将 1.22 修改成你需要升级或安装的版本,如果你需要升级则先看下自己的 Nginx 是什么版本,比如 1.18.1 则修改为 1.18,脚本运行完成后 Nginx 的版本也会升级到 1.18 的最新版本。另外,如果你的服务器未安装 Nginx,则需要将update修改为install

原作者使用的是Ubuntu,本人使用的是Oracle Linux。

参考链接:

让宝塔面板的 Nginx 在 ARM 下也能支持 LuaJIT

Linux磁盘扩容

[MD]

1. 在OCI后台把引导卷从40GB调整为100GB

2.在SSH操作

2.1 lsblk

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk 
├─sda2   8:2    0    8G  0 part [SWAP]
├─sda3   8:3    0 31.5G  0 part /
└─sda1   8:1    0  512M  0 part /boot/efi

可以看到/对应的分区是sda3

2.2 dd 重新扫描磁盘

# dd iflag=direct if=/dev/sda of=/dev/null count=1
# echo "1" | tee /sys/class/block/sda/device/rescan
1

2.3 查询系统类型

# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                      
├─sda2 swap         c20ab25a-797e-4c88-b9b4-bbc5e279a88c [SWAP]
├─sda3 xfs          e8399f69-1f3e-4713-afca-f2b9c8f7bbc6 /
└─sda1 vfat         9BE4-DC71                            /boot/efi

2.4 安装扩容软件

# yum install cloud-utils-growpart
# yum install xfsprogs

sda3的系统类型为xfs,扩容需要安装xfsprogs

2.5 growpart对应的分区

# growpart /dev/sda 3
CHANGED:partition=1 start=...

2.6 扩展分区

# xfs_growfs  /dev/sda3

2.7 验证

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda2   8:2    0    8G  0 part [SWAP]
├─sda3   8:3    0 91.5G  0 part /
└─sda1   8:1    0  512M  0 part /boot/efi

其他问题:

  1. 报错:Couldn’t find valid filesystem superblock.,resize2fs替换为xfs_growfs
  2. 报错:Warning: the kernel is still using the old partition table.The new table will be used at the next reboot.,运行partprobe重新读取分区表

参考链接:
1.https://blog.csdn.net/shitian0811/article/details/104005374
2.https://docs.oracle.com/en-us/Content/Block/Tasks/rescanningdisk.htm