Node.js 科大讯飞 听写接口
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
开发接口?赞啊
好像有 REST 接口,不过不开放
我们的英语听说就是科大讯飞,马德噩梦
封装了嵌入式那个 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_KEY
和YOUR_API_SECRET
为你的实际API Key和Secret,并修改audioFilePath
为你的音频文件路径。这段代码会先获取访问令牌,然后使用该令牌调用听写接口,将音频文件转换为文本。