Node.js 科大讯飞 听写接口

发布于 1周前 作者 gougou168 来自 nodejs/Nestjs

Node.js 科大讯飞 听写接口

从 Node.js 客户端调用科大讯飞 API.

仅支持 Linux64, 仅支持听写接口

Read https://www.npmjs.com/package/xfy-node.

准备工作

git clone [email protected]:Samurais/xfy-node-getstarted.git
cd resources
sudo unzip xfyun_Linux_voice_1135_5864ae2d.zip -d /opt/xfy-sdk

资源文件

data.vioces

*.silk 文件 - N/A *.wav 文件 - 16k, 单通道 *.flac 文件 - 22k, 单通道

测试

cd xfy-node-getstarted
npm install
node index.js

解释

const xfyclient = require('xfy-node');
let file_name = "pro_16k/627b62fb776f833bad37efaf55954e1f_16.wav";
let params = {
    username: null, // 账号名称
    password: null, // 账号密码 
    appid: '5864ae2d', // AppID
    // 语言
    // zh_cn:简体中文
    // zh_tw:繁体中文
    // en_us:英语
    // 默认为 zh_cn
    lang: 'en_us',
    // 口音
    // mandarin:普通话
    // cantonese:粤语
    // 默认为 mandarin
    accent: 'mandarin',
    // 音频格式
    // 8000, 16000, 默认为 16000
    sample_rate: 16000,
    // 音频文件位置,绝对路径
    audio_file: `/home/hain/git/xfy-node-getstarted/data.vioces/${file_name}`
}

xfyclient.iat(params) // 返回 Promise .then(function (result) { console.log(‘result’, result); }, function(err){ console.log(‘err’, err); });

Trouble Shooting

转码

官方案例的数据格式: sox --info wav/iflytek01.wav

Input File     : 'wav/iflytek01.wav'

Channels : 1

Sample Rate : 16000

Precision : 16-bit

Duration : 00:00:04.36 = 69699 samples ~ 326.714 CDDA sectors

File Size : 139k

Bit Rate : 256k

Sample Encoding: 16-bit Signed Integer PCM

  • 批量转码
cd data.vioces
find . -name "*.wav" -print0 | xargs -0 -I file sox file -r 16000 pro_16k/file

7 回复

讯飞是不是没有开放 REST API?


开发接口?赞啊

好像有 REST 接口,不过不开放

我们的英语听说就是科大讯飞,马德噩梦

百度语音是开放了 HTTP 的 API 的,我写了个 python 的包。 https://pypi.python.org/pypi/voicetools/

封装了嵌入式那个 C 库吧~ 之前试着塞到 py 里面去了~

针对你提到的Node.js调用科大讯飞听写接口的问题,这里提供一个简要的示例代码和说明。科大讯飞(iFLYTEK)提供了丰富的语音识别API,其中听写接口允许你将语音转换为文本。

首先,你需要在科大讯飞官网申请开发者账号并获取API Key和API Secret,然后使用这些信息生成访问令牌(Access Token)。

以下是一个使用Node.js调用科大讯飞听写接口的示例代码:

const axios = require('axios');
const fs = require('fs');
const FormData = require('form-data');

async function getAccessToken(apiKey, apiSecret) {
  const response = await axios.post('https://api.xfyun.cn/v2/oauth/2.0/token', {
    grant_type: 'client_credentials',
    client_id: apiKey,
    client_secret: apiSecret
  });
  return response.data.access_token;
}

async function transcribeAudio(accessToken, audioFilePath) {
  const form = new FormData();
  form.append('aue', 'lame');
  form.append('file', fs.createReadStream(audioFilePath));

  const headers = {
    'Authorization': `Bearer ${accessToken}`,
    ...form.getHeaders()
  };

  const response = await axios.post('https://iatservice.xfyun.cn/v1/iat', form, { headers });
  console.log(response.data);
}

// 使用示例
getAccessToken('YOUR_API_KEY', 'YOUR_API_SECRET').then(token => {
  transcribeAudio(token, 'path/to/your/audio/file.wav');
});

请替换YOUR_API_KEYYOUR_API_SECRET为你的实际API Key和Secret,并修改audioFilePath为你的音频文件路径。这段代码会先获取访问令牌,然后使用该令牌调用听写接口,将音频文件转换为文本。

回到顶部