zoukankan      html  css  js  c++  java
  • 讯飞socket版tts之nodejs应用

    本文使用的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();
  • 相关阅读:
    PowerShell 显示气球提示框 2
    BAT 删除隐藏文件
    批处理文件 bat 后台运行
    CMD 命令2
    CMD 命令1
    PowerShell 显示气球提示框 1
    查看SQL Server的版本及License
    How to extract a complete list of extension types within a directory?
    Wordpress无法连接Mysql8的问题
    What is `^M` and how do I get rid of it?
  • 原文地址:https://www.cnblogs.com/meteorcn/p/xunfei-tts-socket.html
Copyright © 2011-2022 走看看