Android studio调用科大讯飞的关键字提取功能
一、介绍
我是在Android studio调用科大讯飞的语音转文字功能的基础上将识别出来的文字进行了关键词提取,Android studio调用科大讯飞的语音转文字功能可以参考我的这篇博客:https://blog.csdn.net/m0_47121562/article/details/123213166
在科大讯飞中找到“关键词提取”,由于没有提供SDK,所以如果调用的话需要访问WebAPI接口,具体可以看参考文档。
因为尝试使用java代码访问接口没有成功,因此选择通过调用python代码访问api接口来实现,android studio通过使用chaquo调用python代码的环境配置可以参考这篇博客:https://blog.csdn.net/sjjsbsbbs/article/details/123015746?spm=1001.2014.3001.5502
二、Android studio通过访问科大讯飞的API实现关键词提取功能
python的环境配置好后,在python文件夹下新建一个python文件tiquguanjianci.py,不需要在app文件夹下面的bulid.gradle中添加需要下载的python 库,tiquguanjianci.py中的代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
import urllib.request
import urllib.parse
import json
import hashlib
import base64
#接口地址
url ="http://ltpapi.xfyun.cn/v1/ke"
#开放平台应用ID
x_appid = "自己的appid"
#开放平台应用接口秘钥
api_key = "自己的apikey"
#语言文本
#TEXT="汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。"
def main(TEXT):
body = urllib.parse.urlencode({'text': TEXT}).encode('utf-8')
param = {"type": "dependent"}
x_param = base64.b64encode(json.dumps(param).replace(' ', '').encode('utf-8'))
x_time = str(int(time.time()))
x_checksum = hashlib.md5(api_key.encode('utf-8') + str(x_time).encode('utf-8') + x_param).hexdigest()
x_header = {'X-Appid': x_appid,
'X-CurTime': x_time,
'X-Param': x_param,
'X-CheckSum': x_checksum}
req = urllib.request.Request(url, body, x_header)
result = urllib.request.urlopen(req)
result = result.read()
print(result.decode('utf-8'))
return result.decode('utf-8')
if __name__ == '__main__':
TEXT="汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。"
main(TEXT)
MainActivity.java的代码如下:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.chaquo.python.PyObject;
import com.chaquo.python.Python;
import com.chaquo.python.android.AndroidPlatform;
import com.iflytek.cloud.RecognizerResult;
import static com.example.myapplication.XunFeiUtil.parseIatResult;
import static com.example.myapplication.XunFeiUtil.*;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button btn_click;
private EditText mResultText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initXunFei(this);
btn_click = (Button) findViewById(R.id.btn_click);
mResultText = ((EditText) findViewById(R.id.result));
btn_click.setOnClickListener(this);
}
@Override
public void onClick(View v) {
startVoice(this, new XunFeiCallbackListener() {
@Override
public void onFinish(RecognizerResult results) {
String text = parseIatResult(results.getResultString());
// 获取语音转换成的文字
mResultText.append(text);
//调用python代码
initPython();// 初始化Python环境
Python py = Python.getInstance();
PyObject pyObject=py.getModule("tiquguanjianci").callAttr("main",text);
String returnString = pyObject.toString();
Log.d("res:",returnString);
}
});
}
// 初始化Python环境
public void initPython(){
if (! Python.isStarted()) {
Python.start(new AndroidPlatform(this));
}
}
}