百度语音api调用

这周是第六周。

本周使用百度的api调用,利用线程池容纳线程进行语音的分析,这样不会因为语音太多而造成卡顿或者造成速度下降等问题。

package myThread;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import key.key;
import reco.voice_recog;

public class Main8 {
	//根目录
	public static String root_path="C:\\Users\\dell-pc\\Desktop\\new";
	//存储还没有被处理的路径
	public static List existing_url;
	//存储路径
	public static List url;//=new ArrayList();
	//存储结果
	public static List list;//=new ArrayList();
	//lock the lists
	public static Lock lists_lock;// =  new ReentrantLock();
	//lock the path
	public static Lock path_lock;
	public static void main(String[] args)
	{
		existing_url=new ArrayList();
		url=new ArrayList();
		list=new ArrayList();
		Main8 m=new Main8();
		//初始化线程
		Main8.myThread thread1=m.new myThread("1");
		Main8.myThread thread2=m.new myThread("2");
		Main8.myThread thread3=m.new myThread("3");
		//初始化锁
		lists_lock =  new ReentrantLock();
		path_lock =  new ReentrantLock();
		//线程池为4
		ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(4);
		exec.scheduleAtFixedRate(thread1, 1000, 1000, TimeUnit.MILLISECONDS);
		exec.scheduleAtFixedRate(thread2, 2000, 1000, TimeUnit.MILLISECONDS);
		exec.scheduleAtFixedRate(thread3, 3000, 1000, TimeUnit.MILLISECONDS);
		exec.scheduleAtFixedRate(m.new myThread2(), 8000, 3000, TimeUnit.MILLISECONDS);
	}
	public class myThread2 implements Runnable
	{
		public String str="print";
		@Override
		public void run() {
			// TODO Auto-generated method stub
			path_lock.lock();
			if(url.isEmpty())
				//打印list中的内容
				print_lists();
			path_lock.unlock();
		}
		public void print_lists()
		{
			if(list.isEmpty())
			{
				System.out.println("list is empty...");
				return ;
			}
			//System.out.println("this thread"+str+" empty()");
			for(int i=0;i list2)
		{
			//将结果添加进list
			list.addAll(list2);
		}
		public boolean is_Empty() {
			//返回是否为空
			return url.isEmpty();
		}
		public List get_json(String path)
		{
			//List str= new voice_recog().get_string("‪C:\\Users\\dell-pc\\Desktop\\MyRecord .amr","amr", key.baidu_ID,key.baidu_key,key.baidu_secret);
			List str=new voice_recog().get_string(path,"amr",
                    key.baidu_ID,key.baidu_key,key.baidu_secret);
			return str;
		}

	}
}

调用百度api,

设置请求参数和secret和secret_key,

接收返回的数据.

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONObject;

import com.baidu.aip.speech.AipSpeech;
public class voice_recog {
	
	public List get_string(String file,String type,
			String baidu_id,String baidu_key,String baidu_secret)
	{
		ArrayList list=new ArrayList();
		//Calendar calendar=Calendar.getInstance();
		//System.out.println(calendar.getTime().toString());
        AipSpeech client = new AipSpeech(baidu_id,baidu_key,baidu_secret);

        // 可选:设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);

        // 调用接口
        JSONObject res = client.asr(file, type, 8000, null);
        //System.out.println(res.toString(2));
        //calendar=Calendar.getInstance();
        //System.out.println(calendar.getTime().toString());
        JSONArray jsonarr= res.getJSONArray("result");
        for(int m=0;m

你可能感兴趣的:(百度语音api调用)