微软-文字转语音.语音合成--逆向爬虫实战

这篇具有很好参考价值的文章主要介绍了微软-文字转语音.语音合成--逆向爬虫实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

gospider 介绍

gospider 是一个golang 爬虫神器,它内置了多种爬虫模块,是golang 爬虫必备的工具包

安装

go get -u gitee.com/baixudong/gospider

gitee地址

https://gitee.com/baixudong/gospider

github地址

https://github.com/baixudong007/gospider

开始文字转语音逆向

通过抓包得到websocket 地址

微软-文字转语音.语音合成--逆向爬虫实战
注意:这个地址中有个X-ConnectionId参数,这个参数写死或者自己生成假的都可以,这个参数不重要

分析文字转语音参数

微软-文字转语音.语音合成--逆向爬虫实战
这里一个发送了三次参数,三个参数中的X-RequestId 值,这个参数写死或者自己生成假的都可以,这个参数不重要

第一个参数
Path: speech.config
X-RequestId: 890341095E354C9D9C99066349BEC419
X-Timestamp: 2023-03-05T11:54:54.557Z
Content-Type: application/json

{"context":{"system":{"name":"SpeechSDK","version":"1.19.0","build":"JavaScript","lang":"JavaScript"},"os":{"platform":"Browser/Win32","name":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.63","version":"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.63"}}}

第二个参数

Path: synthesis.context
X-RequestId: 890341095E354C9D9C99066349BEC419
X-Timestamp: 2023-03-05T11:54:54.558Z
Content-Type: application/json

{"synthesis":{"audio":{"metadataOptions":{"bookmarkEnabled":false,"sentenceBoundaryEnabled":false,"visemeEnabled":false,"wordBoundaryEnabled":false},"outputFormat":"audio-24khz-96kbitrate-mono-mp3"},"language":{"autoDetection":false}}}

第三个参数

Path: ssml
X-RequestId: 890341095E354C9D9C99066349BEC419
X-Timestamp: 2023-03-05T11:54:54.559Z
Content-Type: application/ssml+xml

<speak xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xmlns:emo="http://www.w3.org/2009/10/emotionml" version="1.0" xml:lang="en-US"><voice name="zh-CN-XiaoxiaoNeural"><prosody rate="0%" pitch="0%">你可将此文本替换为所需的任何文本。你可在此文本框中编写或在此处粘贴你自己的文本。

试用不同的语言和声音。改变语速和音调。你甚至可调整 SSML(语音合成标记语言),以控制文本不同部分的声音效果。单击上面的 SSML 试用一下!

请尽情使用文本转语音功能!</prosody></voice></speak>

注意: 这三个参数要以text 的形式发送到接口。参数中的值没有难度

gospider 代码实现

package main

import (
	"fmt"
	"log"
	"strings"
	"time"

	"gitee.com/baixudong/gospider/re"
	"gitee.com/baixudong/gospider/requests"
	"gitee.com/baixudong/gospider/tools"
	"gitee.com/baixudong/gospider/websocket"
	"github.com/google/uuid"
)

func createMsg(path, requestId, contentType string, con string) []byte {
	txt := fmt.Sprintf("Path: %s\r\nX-RequestId: %s\r\nX-Timestamp: %s\r\nContent-Type: %s\r\n\r\n%s",
		path,
		requestId,
		time.Now().Format("2006-01-02T15:04:05.271Z"),
		contentType,
		con,
	)
	return tools.StringToBytes(txt)
}

var quid = strings.ToUpper(re.Sub("-", "", uuid.New().String()))

func main() {
	socketUrl := "wss://eastus.api.speech.microsoft.com/cognitiveservices/websocket/v1?TrafficType=AzureDemo&Authorization=bearer%20undefined&X-ConnectionId=" + strings.ToUpper(re.Sub("-", "", uuid.New().String()))
	reqCli, err := requests.NewClient(nil)
	if err != nil {
		log.Panic(err)
	}
	resp, err := reqCli.Request(nil, "get", socketUrl, requests.RequestOption{
		Headers: map[string]string{
			"Accept-Encoding": "gzip, deflate, br",
			"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
			"Cache-Control":   "no-cache",
			"Host":            "eastus.api.speech.microsoft.com",
			"Origin":          "https://azure.microsoft.com",
			"Pragma":          "no-cache",
			"User-Agent":      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.26",
		},
	})
	if err != nil {
		log.Panic(err)
	}
	wsCli := resp.WebSocket()
	if err = wsCli.Send(nil,
		websocket.MessageText,
		createMsg("speech.config", quid, "application/json",
			tools.Any2json(map[string]any{
				"context": map[string]any{
					"system": map[string]string{"name": "SpeechSDK", "version": "1.19.0", "build": "JavaScript", "lang": "JavaScript"},
					"os": map[string]string{"platform": "Browser/Win32", "name": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.26",
						"version": "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.26"},
				},
			}).Raw),
	); err != nil {
		log.Panic(err)
	}
	if err = wsCli.Send(nil, websocket.MessageText, createMsg("synthesis.context", quid, "application/json",
		tools.Any2json(map[string]any{
			"synthesis": map[string]any{
				"audio": map[string]any{
					"metadataOptions": map[string]bool{"bookmarkEnabled": false, "sentenceBoundaryEnabled": false, "visemeEnabled": false, "wordBoundaryEnabled": false},
					"outputFormat":    "audio-24khz-96kbitrate-mono-mp3",
				},
				"language": map[string]bool{"autoDetection": false},
			},
		}).Raw,
	)); err != nil {
		log.Panic(err)
	}
	if err = wsCli.Send(nil, websocket.MessageText, createMsg("ssml", quid, "application/ssml+xml",
		`<speak xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xmlns:emo="http://www.w3.org/2009/10/emotionml" version="1.0" xml:lang="en-US"><voice name="zh-CN-XiaoxiaoNeural"><prosody rate="0%" pitch="0%">		
		招标125456请尽情使用招标125456
		</prosody></voice></speak>`,
	)); err != nil {
		log.Panic(err)
	}
	for {
		msgType, msgCon, err := wsCli.Recv(nil)
		if err != nil {
			log.Panic(err)
		}
		switch msgType {
		case websocket.MessageText:
			log.Print(string(msgCon))
			if strings.Contains(string(msgCon), "Path:turn.end") {
				log.Print("转换结束")
				break
			}
		case websocket.MessageBinary: //音频流
			log.Print("读取音频流中")
		}
	}
}

现在就可以免费的使用微软的文字转语音服务了文章来源地址https://www.toymoban.com/news/detail-515427.html

到了这里,关于微软-文字转语音.语音合成--逆向爬虫实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序调用科大讯飞 在线合成语音接口(文字转语音)

    科大讯飞在线文档 https://www.xfyun.cn/doc/tts/online_tts/API.html 科大讯飞调用接口 地址 https://blog.csdn.net/jinxi1112/article/details/122835386 微信小程序base64转ArrayBuffer替代方案 https://www.homedt.net/43939.html 注意点 调用函数 参考大佬的实例 这里说一下注意的点 微信小程序 不支持在线的 base64

    2024年02月10日
    浏览(44)
  • 微软语音合成(tts)服务申请和调用

    https://azure.microsoft.com/zh-cn/free/ 这里有个视频教程,根据此完成申请流程: https://www.bilibili.com/video/BV15a4y1W7re?vd_source=bf07f28d37849885d215dc3aea189eba 申请完成后,就可以到这里申请资源: https://portal.azure.com/#home 点击资源组,里面就有部署好的服务了 点击这里,可以获取 subscription

    2024年02月11日
    浏览(52)
  • 【语音合成】微软 edge-tts

    目录 1. edge-tts 介绍 2. 代码示例 https://github.com/rany2/edge-tts 在Python代码中使用Microsoft Edge的在线文本到语音服务

    2024年02月14日
    浏览(45)
  • 文本转语音:微软语音合成标记语言 (SSML) 文本结构和事件

    ​ SSML 的语音服务实现基于万维网联合会的语音合成标记语言版本 1.0。 ​ 语音服务支持的元素可能与 W3C 标准不同。 每个 SSML 文档是使用 SSML 元素(或标记)创建的。 这些元素用于调整语音、风格、音节、韵律、音量等。 下面是 SSML 文档的基本结构和语法的子集: 以下列

    2024年02月03日
    浏览(47)
  • 如何注册微软Azure并获取语音合成服务?

    按步骤,一步步来。 使用条件,以下可选: 1、有信用卡 2、有学生邮箱、学校邮箱。 步骤: 1、打开地址,去注册。 信用卡注册: 文本转语音 – 真实 AI 语音生成器 | Microsoft Azure 学生邮箱: 面向学生的 Azure - 免费帐户额度 | Microsoft Azure 2、注册后去后台,打开语音服务。 后

    2024年02月03日
    浏览(48)
  • 微软语音合成网页版源码,影视解说配音网页版

    简介: 最新微软语音合成网页版源码,影视解说配音网页版,仅几个文件写成的微软语音合成接口,调用的是官方api,亲测合成很快,大家总听到的短视频电影解说与搞笑短视频,都是微软配音员,可以说是市面上语音合成中最像真人的了。 搭建教程 1.将压缩包内的index.h

    2024年02月19日
    浏览(36)
  • 【虚幻引擎】UE4/UE5科大讯飞文字合成语音

    B站视频链接:https://space.bilibili.com/449549424?spm_id_from=333.1007.0.0   第一步:首先进入讯飞开放平台注册一个账号,然后创建一个 创建一个应用,命名按照你自己的想法来,会产生一个APPID,具体参考UE4如何接入科大讯飞的语音识别_ue4 科大讯飞的语音识别_飞起的猪的博客-CSDN博

    2024年02月13日
    浏览(72)
  • MS-TTS:免费微软TTS语音合成工具(一键合成导出MP3音频)

    声明 本工具是个免费工具,遇到问题,还请自行解决,下面有文字教程,B站有视频教程(链接在文章末尾); 其次,微软接口卡顿,连接超时等问题下方有详细说明,请仔细看一下; 再次,强制升级是为了统一版本方便问题的收集与解决,如果你能理解最好,不能理解的话

    2024年02月03日
    浏览(45)
  • 【C#】Whisper 离线语音识别(微软晓晓语音合成的音频)(带时间戳、srt字幕)...

    语音合成语音识别 用微软语音合成功能生成xiaoxiao的语音。 用Whisper离线识别合成的语音输出srt字幕。 一、语音合成 参考这个网址:https://www.bilibili.com/read/cv19064633 合成的音频:晓晓朗读-温柔 二、Whisper 语音识别 下载模型后放入程序目录下: 请注意,主要示例目前仅使用

    2024年02月06日
    浏览(46)
  • 基于express调用chatgpt文字流输出和有道智云语音合成

    express是基于node.js的一个web框架,可以更加简洁的去创建一个后台服务,由于项目的需要,引入和typescript,经过几天的努力实现了chatgpt文字流输出+有道智云语音合成的结合(略有遗憾),下面我记载以下,以供参考     要出现chatgpt原生接口的流式效果(也就是一个字一个字

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包