ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

讯飞socket版tts之nodejs应用

2020-02-02 15:03:29  阅读:314  来源: 互联网

标签:const socket nodejs tts app ret test


本文使用的npm核心库: https://www.npmjs.com/package/xf-tts-socket

 

最近在看文本转语音的服务,经过多次对比后,发现综合来看还是讯飞的体验最好。其他家转换出来的语音,都过于生硬,一听就是机器人。只有讯飞家的比较接近正常人的发音特点。

在线体验科大讯飞文本转语音服务: https://www.xfyun.cn/services/online_tts

 

下一步就是尝试整合到自己的项目中去了。查看官网说明,发现新版本的tts API有以下特点:

1. 只支持websocket,与常规意义上的API使用方式差异较大

2. 鉴权方面需要多次复杂的编码转换

3. 只支持pcm格式的语音返回,不支持mp3, wav格式等

4. 对nodejs的异步,回调没有支持

 

上述几个特点,导致使用它比较不容易。最终决定自己多花一些时间,写一个通用支持类库。这个类库的目标就是简化调用,只提供必须的信息,一个函数调用即可。目前这个库已经上传npm,希望可以给其他人使用时提供进一步的便利。

 

这个库的核心功能:

1. 符合常规nodejs调用方式,不必关心websocket部分

2. 支持async-await和回调语法

3. 支持多语音格式,pcm, mp3, wav等

 

 

npm包地址:https://www.npmjs.com/package/xf-tts-socket

安装方式:npm install xf-tts-socket --save

 

async-await使用方式(默认发音人设置)

const XunfeiTTS = require('xf-tts-socket');
const { promisify } = require('util');
const getXunfeiTTSAsync = promisify(XunfeiTTS);
 
const test = async () => {
  const auth = {
    app_id: 'xxxxxx',
    app_skey: 'xxxxxxxxxxx',
    app_akey: 'xxxxxxxxxxx',
  };
  const business = {};
  const text = '如果握手失败,则根据不同错误类型返回不同HTTP Code状态码';
  const file = 'test.mp3';
 
  const ret = await getXunfeiTTSAsync(auth, business, text, file);
  console.log('ret', ret);
};
 
test();

 

async-await使用方式(自定义发音人设置)

const XunfeiTTS = require('xf-tts-socket');
const { promisify } = require('util');
const getXunfeiTTSAsync = promisify(XunfeiTTS);
 
const test = async () => {
  const auth = {
    app_id: 'xxxxxx',
    app_skey: 'xxxxxxxxxxx',
    app_akey: 'xxxxxxxxxxx',
  };
  const business = {
    aue: 'raw',
    auf: 'audio/L16;rate=16000',
    vcn: 'aisbabyxu',
    tte: 'UTF8',
    speed: 50
  };
  const text = '如果握手失败,则根据不同错误类型返回不同HTTP Code状态码';
  const file = 'test.mp3';
 
  const ret = await getXunfeiTTSAsync(auth, business, text, file);
  console.log('ret', ret);
};
 
test();

 

callback使用方式(默认发音人设置)

const XunfeiTTS = require('xf-tts-socket');
 
const test = () => {
  const auth = {
    app_id: 'xxxxxx',
    app_skey: 'xxxxxxxxxxx',
    app_akey: 'xxxxxxxxxxx',
  };
  const business = {};
  const text = '如果握手失败,则根据不同错误类型返回不同HTTP Code状态码';
  const file = 'test.mp3';
  XunfeiTTS(auth, business, text, file, (err, ret) => {
    console.log('ret', ret);
  });
};
 
test();

 

标签:const,socket,nodejs,tts,app,ret,test
来源: https://www.cnblogs.com/meteorcn/p/xunfei-tts-socket.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有