Golang使用微软语音SDK实现文字转语音,Docker环境开箱即用
微软语音是什么这里就不多说了,文本转语音我之前尝试过调用 REST API,但是太慢了,一句话的文本还行,几百字的文本就需要几十秒,甚至几分钟,就很容易失败。所以这次尝试一下Go版本的 SDK,吸引我的点是它快,并且可以在服务端运行
配置开发环境
按照官方文档所说需要先配置语音SDK,而这个SDK只支持Linux,所以我选择了Go的官方Docker镜像 Golang:1.19(此镜像是基于Debian),然后配合VS Code进行容器内开发
如上,我打开了VS Code,按照官方文档的步骤
apt-get update
apt-get install build-essential libssl-dev libasound2 wget
export SPEECHSDK_ROOT="$HOME/speechsdk"
mkdir -p "$SPEECHSDK_ROOT"
wget -O SpeechSDK-Linux.tar.gz https://aka.ms/csspeech/linuxbinary
tar --strip 1 -xzf SpeechSDK-Linux.tar.gz -C "$SPEECHSDK_ROOT"
ls -l "$SPEECHSDK_ROOT"
export CGO_CFLAGS="-I$SPEECHSDK_ROOT/include/c_api"
export CGO_LDFLAGS="-L$SPEECHSDK_ROOT/lib/x64 -lMicrosoft.CognitiveServices.Speech.core"
export LD_LIBRARY_PATH="$SPEECHSDK_ROOT/lib/x64:$LD_LIBRARY_PATH"
如上,导入了几个环境变量,而且是用export,export命令的效果仅限于当前登录终端,也就是说你关闭VS Code,再重新打开就失效了,需要重新导入。这不是我想要的,所以就需要重新构建镜像,直接看Dockerfile
FROM golang:1.19
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=https://goproxy.cn,direct
#speechsdk start
ENV SPEECHSDK_ROOT="$HOME/speechsdk"
RUN apt-get update && apt-get install -y build-essential libssl-dev libasound2 wget \
&& mkdir -p "$SPEECHSDK_ROOT" \
&& wget -O SpeechSDK-Linux.tar.gz https://aka.ms/csspeech/linuxbinary \
&& tar --strip 1 -xzf SpeechSDK-Linux.tar.gz -C "$SPEECHSDK_ROOT" \
&& ls -l "$SPEECHSDK_ROOT" \
&& rm SpeechSDK-Linux.tar.gz
ENV CGO_CFLAGS="-I$SPEECHSDK_ROOT/include/c_api"
ENV CGO_LDFLAGS="-L$SPEECHSDK_ROOT/lib/x64 -lMicrosoft.CognitiveServices.Speech.core"
ENV LD_LIBRARY_PATH="$SPEECHSDK_ROOT/lib/x64:$LD_LIBRARY_PATH"
#speechsdk end
然后,构建
docker build -t chudaozhe/golang:1.19-speechsdk .
此镜像已推到Docker Hub,大家可以直接使用
镜像的使用
这里简单介绍一下如何使用这个镜像
首先,在你的项目根目录创建一个.docker
目录,然后在里面添加一个docker-compose.yaml
文件,内容如下
cuiwei@weideMacBook-Pro cobra-demo % cat .docker/docker-compose.yaml
version: '3'
networks:
go-network:
services:
docker-go:
image: chudaozhe/golang:1.19-speechsdk
tty: true
# command: /bin/bash -c "go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && bash"
ports:
- 8000:8000
networks:
- go-network
然后,依次找到Docker Desktop
-> Dev Environments
-> Create
,打开你的项目,这里假设项目目录为cobra-demo
如上图,继续下一步你就会看到OPEN IN VSCODE
的按钮
测试一下
直接使用官方的demo:文本转语音输出到扬声器
如图,先替换一下key和region,然后执行
可以看到输出成功了,但你可能听不到声音;没关系,语音输出到扬声器不是我的目的,输出到文件才是。
好了,至此这篇文章就先结束了,我要继续研究将语音合成到文件
了,再见,再见👋👋
参考
https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/quickstarts/setup-platform
https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/how-to-speech-synthesis
https://github.com/microsoft/cognitive-services-speech-sdk-go/tree/master/samples