Beispiel #1
0
def run():
    global total_num, result
    r = read_xls_news.Read_xls(excel_path)
    w = r.copy_book()
    r.save_write(w, result_path)
    devices = adb_devices(pattern)
    if devices == False:
        raise ("a db异常,未识别到设备")
    else:
        for i in range(100):
            Log.info("开始第%s条测试" % (i + 1))
            sessionId = wakeup()
            if sessionId is None:
                Log.error("連續三次未喚醒!")
            else:
                into_time = time.strftime('%Y-%m-%d-%H-%M-%S')
                Log.info("唤醒成功且进入全双工:%s" % into_time)
                info = noise_info()
                out_time = time.strftime('%Y-%m-%d-%H-%M-%S')
                nlg_asr = re.findall(nlg_asr_pattern, info)
                total_num += len(nlg_asr)
                result = "当前累积ASR噪音误识别打断次数为:%s" % total_num
                Log.info("第%s轮,测试结果:误识别%s次,误识别结果:%s" %
                         (i + 1, len(nlg_asr), nlg_asr))
                Log.info(result)
                resul_list = [i, sessionId, into_time, out_time,
                              len(nlg_asr)] + nlg_asr
                rr = read_xls_news.Read_xls(result_path)
                rw = rr.copy_book()
                rr.write_linedata(rw, i + 1, resul_list)
                rr.save_write(rw, result_path)
    return result
Beispiel #2
0
def run():
    global test_num, asr_succese_num, total_num, asrANDbreak_succese_num, break_succese_num
    r = read_xls_news.Read_xls(excel_path)
    w = r.copy_book()
    r.save_write(w, result_path)
    for i in range(100):
        Log.info("开始第%s条测试" % (i + 1))
        sessionId = wakeup()
        if sessionId is None:
            Log.error("連續三次未喚醒!")
        else:
            into_time = time.strftime('%Y-%m-%d-%H-%M-%S')
            Log.info("唤醒成功且进入全双工:%s" % into_time)
            log_info = s.recvcmd(35)
            out_time = time.strftime('%Y-%m-%d-%H-%M-%S')
            nlg_asr = re.findall(asr_pattern, log_info)
            total_num += len(nlg_asr)
            test_result = "当前累积ASR噪音误识别打断次数为:%s" % total_num
            Log.info("第%s轮,测试结果:误识别%s次,误识别结果:%s" %
                     (i + 1, len(nlg_asr), nlg_asr))
            Log.info(test_result)
            resul_list = [i, into_time, out_time, len(nlg_asr)] + nlg_asr
            rr = read_xls_news.Read_xls(result_path)
            rw = rr.copy_book()
            rr.write_linedata(rw, i + 1, resul_list)
            rr.save_write(rw, result_path)
Beispiel #3
0
def run():
    global test_num, asr_succese_num, total_num
    bookname = '002M30_36'
    booknames = [bookname]
    test_data = get_data(excel_path, booknames)
    for i in range(len(test_data)):
        Log.info("开始第%s条测试:%s" % (i + 1, test_data[i][:2]))
        except_value = test_data[i][1]
        wav_path = cmd_path + "/002M30_36_" + test_data[i][0] + ".wav"  # wav 路径
        test_result = "Fail"
        iswakeup = wakeup()
        if iswakeup is None:
            Log.error("連續三次未喚醒!")
        else:
            test_num += 1
            Log.info("唤醒成功,即将进入播放音频进行ASR测试")
            rr = read_xls_news.Read_xls(result_path)
            rw = rr.copy_book()
            Log.info("开始播放测试音频【%s】" % wav_path)
            mypyaudio.play_audio(wav_path)
            asr = s.recv_data(pattern_list=[asr_pattern], checktime=5)[0]
            if simplify_asr(except_value) == simplify_asr(asr):
                test_result = "Pass"
                asr_succese_num += 1
            asr_succese_rate = "%.2f%%" % (asr_succese_num / test_num * 100)
            Log.info("用例【%s】ASR识别结果:%s" % (test_data[i][:2], asr))
            Log.info("用例【%s】ASR测试结果:%s" % (test_data[i][:2], test_result))
            Log.info(
                "当前一共执行测试【%s次】,正常执行【%s】,其中ASR识别正确【%s次】,识别率为:【%s】" % (
                    i + 1, test_num, asr_succese_num, asr_succese_rate))
            rr.write_linedata(rw, i + 2, [asr, test_result], sheetname=bookname, col=3)
            rr.write_onlydata(rw, 0, 1, asr_succese_rate, sheetname=bookname)
            rr.save_write(rw, result_path)
Beispiel #4
0
def t2(baudrate, serialname, product, logpath):
    global test_num, asr_succese_num, total_num
    Log = log.Logger(logpath)
    Log.info("=======================%s半双工链路ASR识别率测试========================" %
             product)
    # s = MySerial(buatrate, Log, serialname)
    print(1)
    s = serial.Serial(serialname, baudrate, timeout=60)
    print(2)
    # s = recvcmd(baudrate, Log, serialname, timeout=None)
    now = time.strftime('%Y-%m-%d-%H-%M-%S')
    result_path = os.path.join(
        Project_path.test_result_path,
        '%s-半双工ASRm45度噪音识别率测试--result%s.xls' % (product, now))
    bookname = '015'
    booknames = [bookname]
    print(1)
    test_data = get_data(excel_path, result_path, booknames=booknames)
    for i in range(len(test_data)):
        Log.info("开始第%s条测试:%s" % (i + 1, test_data[i][:2]))
        except_value = test_data[i][1]
        wav_path = os.path.join(cmd_path, test_data[i][0] + ".wav")  # wav 路径
        test_result = "Fail"
        iswakeup = wakeup(s, Log)
        if not iswakeup:
            Log.error("連續三次未喚醒!")
        else:
            test_num += 1
            Log.info("唤醒成功,即将进入播放音频进行ASR测试")
            rr = read_xls_news.Read_xls(result_path)
            rw = rr.copy_book()
            Log.info("开始播放测试音频【%s】" % wav_path)
            mypyaudio.play_audio(wav_path)
            asr_log = recvcmd(s, Log, 10)
            asr_result = re.findall(asr_mid_pattern, asr_log)
            if asr_result:
                asr = asr_result[0]
                mid = asr_result[1]
                if except_value == asr:
                    test_result = "Pass"
                    asr_succese_num += 1
            else:
                asr = "False"
                mid = "False"
            asr_succese_rate = "%.2f%%" % (asr_succese_num / test_num * 100)
            Log.info("[%s]:用例【%s】ASR识别结果:%s" %
                     (product, test_data[i][:2], asr))
            Log.info("[%s]:用例【%s】ASR测试结果:%s" %
                     (product, test_data[i][:2], test_result))
            Log.info(
                "[%s]当前一共执行测试【%s次】,正常执行【%s】,其中ASR识别正确【%s次】,识别率为:【%s】" %
                (product, i + 1, test_num, asr_succese_num, asr_succese_rate))
            rr.write_linedata(rw,
                              i + 2, [asr, test_result, mid],
                              sheetname=bookname,
                              col=3)
            rr.write_onlydata(rw, 0, 1, asr_succese_rate, sheetname=bookname)
            rr.save_write(rw, result_path)
Beispiel #5
0
 def setup(self):
     global total_num
     total_num+=1
     iswakeup=wakeup()
     if iswakeup != None:
         self.Log.info("唤醒成功,即将进入播放音频进行ASR测试")
         self.rr = read_xls_news.Read_xls(result_path)
         self.rw = self.rr.copy_book()
     else:
         raise ("連續三次未喚醒!")
Beispiel #6
0
 def setup(self):
     global total_num
     total_num+=1
     isfullduplex = in_fullduplex(wakeup())
     if isfullduplex == True:
         self.Log.info("已进入全双工,即将进行ASR测试")
         self.rr = read_xls_news.Read_xls(result_path)
         self.rw = self.rr.copy_book()
     else:
         raise ("连续三次未进入全双工,退出当前用例!")
Beispiel #7
0
def run():
    global test_num, asr_succese_num, total_num
    devices = adb_devices(pattern)
    if devices == False:
        raise ("a db异常,未识别到设备")
    else:
        bookname = '002M30_36'
        booknames = [bookname]
        test_data = get_data(excel_path, booknames)
        for i in range(len(test_data)):
            Log.info("开始第%s条测试:%s" % (i + 1, test_data[i][:2]))
            except_value = test_data[i][1]
            wav_path = cmd_path + "/002M30_36_" + test_data[i][
                0] + ".wav"  # wav 路径
            result = "Fail"
            mid = ''
            sessionId = ''
            iswakeup = wakeup()
            if iswakeup is None:
                Log.error("連續三次未喚醒!")
            else:
                test_num += 1
                Log.info("唤醒成功,即将进入播放音频进行ASR测试")
                rr = read_xls_news.Read_xls(result_path)
                rw = rr.copy_book()
                Log.info("开始播放测试音频【%s】" % wav_path)
                try:
                    winsound.PlaySound(wav_path, winsound.SND_FILENAME)
                except Exception as e:
                    Log.error(e)
                    mypyaudio.play_audio(wakeup_path)
                asr_result = adb_info(asr_pattern)
                if asr_result != False:
                    sessionId = adb_info(sessionId_patteern)
                    mid = adb_info(mid_pattern)
                if asr_result == except_value:
                    result = "Pass"
                    asr_succese_num += 1
                asr_succese_rate = "%.2f%%" % (asr_succese_num / test_num *
                                               100)
                Log.info("用例【%s】ASR识别结果:%s" % (test_data[i][:2], asr_result))
                Log.info("用例【%s】ASR测试结果:%s" % (test_data[i][:2], result))
                Log.info("当前一共执行测试【%s次】,正常执行【%s】,其中ASR识别正确【%s次】,识别率为:【%s】" %
                         (i + 1, test_num, asr_succese_num, asr_succese_rate))
                rr.write_linedata(rw,
                                  i + 2, [asr_result, result, mid, sessionId],
                                  sheetname=bookname,
                                  col=3)
                rr.write_onlydata(rw,
                                  0,
                                  1,
                                  asr_succese_rate,
                                  sheetname=bookname)
                rr.save_write(rw, result_path)
Beispiel #8
0
def get_data(path, booknames=None):
    r = read_xls_news.Read_xls(path)
    if booknames is None:
        booknames = r.get_sheet_names()
    test_data = []
    for i in range(len(booknames)):
        data = r.read_data(booknames[i], start_line=3)
        test_data += data
        i += 1
    w = r.copy_book()
    r.save_write(w, result_path)
    return test_data
Beispiel #9
0
 def test_asr(self, tdata):
     global test_num, asr_succese_num, total_num
     total_num += 1
     iswakeup = wakeup()
     if iswakeup != None:
         self.Log.info("唤醒成功,即将进入播放音频进行ASR测试")
         self.rr = read_xls_news.Read_xls(result_path)
         self.rw = self.rr.copy_book()
     else:
         raise ("連續三次未喚醒!")
     self.Log.info(tdata)
     testid = int(tdata[0]) - 10000
     except_value = tdata[1]
     wav_path = cmd_path + "/002M30_36_" + tdata[0] + ".wav"  # wav 路径
     result = "Fail"
     self.Log.info("开始播放测试音频【%s】" % wav_path)
     winsound.PlaySound(wav_path, winsound.SND_FILENAME)
     pattern = "asr\":\\t\"(.*)\","
     time.sleep(0.5)
     asr_result = adb_info(pattern)
     try:
         assert asr_result == except_value
     except Exception as e:
         result = "Fail"
         raise e
     else:
         result = "Pass"
         asr_succese_num += 1
     finally:
         test_num += 1
         asr_succese_rate = "%.2f%%" % (asr_succese_num / test_num * 100)
         self.Log.info("用例【%s】ASR识别结果:%s" % (tdata[:2], asr_result))
         self.Log.info("用例【%s】ASR测试结果:%s" % (tdata[:2], result))
         self.Log.info(
             "当前一共执行测试【%s次】,正常执行【%s】,其中ASR识别正确【%s次】,识别率为:【%s】" %
             (testid, total_num, asr_succese_num, asr_succese_rate))
         self.rr.write_linedata(self.rw,
                                testid + 1, [asr_result, result],
                                sheetname="002M30_36",
                                col=3)
         self.rr.write_onlydata(self.rw,
                                0,
                                1,
                                asr_succese_rate,
                                sheetname="002M30_36")
         self.rr.save_write(self.rw, result_path)
Beispiel #10
0
def wakeup():
    if (os.path.exists(wakeup_path)):
        for i in range(3):
            winsound.PlaySound(wakeup_path, winsound.SND_FILENAME)
            result = adb_info(wakeup_pattern)
            if result == False:
                Log.error("连续%s次未唤醒" % (i + 1))
                i += 1
            else:
                return True
    else:
        raise ("唤醒的音频文件不存在..." + wakeup_path)


r = read_xls_news.Read_xls(excel_path)
# booknames=r.get_sheet_names()
booknames = ['002M30_36']
data = []
for i in range(len(booknames)):
    tdata = r.read_data(booknames[i], start_line=3)
    data += tdata
    # print(data)
    i += 1
w = r.copy_book()
r.save_write(w, result_path)

total_num = 0
asr_succese_num = 0
test_num = 0
Beispiel #11
0
def run():
    global test_num, asr_succese_num, total_num, break_succese_num, asrANDbreak_succese_num, result_txt
    bookname = '002M30_36'
    booknames = [bookname]
    test_data = get_data(excel_path, booknames)
    devices = adb_devices(pattern)
    if devices == False:
        raise ("a db异常,未识别到设备")
    else:
        for i in range(400):
            Log.info("开始第%s条测试:%s" % (i + 1, test_data[i][:2]))
            except_value = test_data[i][1]
            wav_path = cmd_path + "/002M30_36_" + test_data[i][0] + ".wav"  # wav 路径
            sessionId = wakeup()
            if sessionId is None:
                Log.error("連續三次未喚醒!")
            else:
                Log.info("唤醒成功且进入全双工,即将进入播放前置音频")

                if break_pre(sessionId):
                    Log.info("即将播放音频【%s】" % wav_path)
                    test_num += 1
                    rr = read_xls_news.Read_xls(result_path)
                    rw = rr.copy_book()
                    pattern_list = [asr_pattern, mid_pattern, endTTS_pattern, startTTS_pattern]
                    # 获取测试音频时长
                    with contextlib.closing(wave.open(wav_path, 'r')) as f:
                        wav_length = f.getnframes() / float(f.getframerate())
                    result_list = main2(pattern_list, wav_path, timeout=wav_length + 5)
                    asr_result = result_list[0]
                    if asr_result == except_value:
                        asr_succese_num += 1
                    if asr_result != False:
                        if result_list[2] != False and result_list[3] != False:
                            result = "Pass"
                            break_succese_num += 1
                            if asr_result == except_value:
                                asrANDbreak_succese_num += 1
                        else:
                            result = "Fail"
                    else:
                        result = "Fail"
                    mid = result_list[1]
                    asr_succese_rate = "%.2f%%" % (asr_succese_num / test_num * 100)
                    # 打断召回率
                    break_recall_rate = "%.2f%%" % (asrANDbreak_succese_num / test_num * 100)
                    # 打断精准率
                    if break_succese_num > 0:
                        break_accurate_rate = "%.2f%%" % (asrANDbreak_succese_num / break_succese_num * 100)
                    else:
                        break_accurate_rate = 0
                    Log.info("用例【%s】ASR识别结果:%s" % (test_data[i][:2], asr_result))
                    Log.info("用例【%s】打断测试结果:%s" % (test_data[i][:2], result))
                    result_txt = "当前一共执行测试【%s次】,正常执行【%s】,其中ASR识别正确【%s次】,打断成功【%s次】,识别率为:【%s】,打断精准率为:【%s】,打断召回率为:【%s】" % (
                        i + 1, test_num, asr_succese_num, break_succese_num, asr_succese_rate, break_accurate_rate,
                        break_recall_rate)
                    Log.info(result_txt)

                    rr.write_linedata(rw, i + 2, [asr_result, result, mid, sessionId], sheetname=bookname, col=2)
                    rr.write_linedata(rw, 0,
                                      ["asr_succese_rate", asr_succese_rate, "break_accurate_rate", break_accurate_rate,
                                       "break_recall_rate", break_recall_rate], sheetname=bookname)
                    rr.save_write(rw, result_path)
Beispiel #12
0
def run():
    global test_num, asr_succese_num, total_num, asrANDbreak_succese_num, break_succese_num
    bookname = '002M30_36'
    booknames = [bookname]
    test_data = get_data(excel_path, booknames)
    for i in range(len(test_data)):
        Log.info("开始第%s条测试:%s" % (i + 1, test_data[i][:2]))
        except_value = test_data[i][1]
        wav_path = cmd_path + "/002M30_36_" + test_data[i][0] + ".wav"  # wav 路径
        mid = wakeup()
        if mid is None:
            Log.error("連續三次未喚醒!")
        else:
            Log.info("唤醒成功且进入全双工,即将进入播放前置音频")
            if break_pre():
                Log.info("即将播放音频【%s】" % wav_path)
            mypyaudio.play_audio(wav_path)
            test_num += 1
            rr = read_xls_news.Read_xls(result_path)
            rw = rr.copy_book()
            pattern_list = [asr_pattern, endTTS_pattern, startTTS_pattern]
            result_list = s.recv_data(pattern_list=pattern_list, checktime=7)
            asr = result_list[0]
            asr_result = "Fail"
            break_result = "Fail"
            if asr:
                if result_list[1] and result_list[2]:
                    break_result = "Pass"
                    break_succese_num += 1
                    if simplify_asr(except_value) == simplify_asr(asr):
                        asr_result = "Pass"
                        asr_succese_num += 1
                        asrANDbreak_succese_num += 1
            asr_succese_rate = "%.2f%%" % (asr_succese_num / test_num * 100)
            # 打断召回率
            break_recall_rate = "%.2f%%" % (asrANDbreak_succese_num /
                                            test_num * 100)
            # 打断精准率
            if break_succese_num > 0:
                break_accurate_rate = "%.2f%%" % (asrANDbreak_succese_num /
                                                  break_succese_num * 100)
            else:
                break_accurate_rate = 0
            Log.info("用例【%s】ASR识别结果:%s" % (test_data[i][:2], asr))
            Log.info("用例【%s】打断测试结果:%s" % (test_data[i][:2], break_result))
            result_txt = "当前一共执行测试【%s次】,正常执行【%s】,其中ASR识别正确【%s次】,打断成功【%s次】,识别率为:【%s】,打断精准率为:【%s】,打断召回率为:【%s】" % (
                i + 1, test_num, asr_succese_num, break_succese_num,
                asr_succese_rate, break_accurate_rate, break_recall_rate)
            Log.info(result_txt)
            rr.write_linedata(rw,
                              1, ["asr", "asr_result", "break_result", "mid"],
                              sheetname=bookname,
                              col=2)
            rr.write_linedata(rw,
                              i + 2, [asr, asr_result, break_result, mid],
                              sheetname=bookname,
                              col=2)
            rr.write_linedata(rw,
                              0, [
                                  "asr_succese_rate", asr_succese_rate,
                                  "break_accurate_rate", break_accurate_rate,
                                  "break_recall_rate", break_recall_rate
                              ],
                              sheetname=bookname)
            rr.save_write(rw, result_path)
Beispiel #13
0
# coding:utf-8

# 噪音误识别测试
import subprocess, time, re, os, winsound, pytest, datetime
from Common import log, read_xls_news

testdata_path = 'E:\ws\\test_date\FalseRecognition.xls'  # 映射关系表,命令词
result_path = "E:/ws/test_result/result.xlsx"
wakeup_path = "E:/ws/test_audio/002M30_36_010003.wav"  # #唤醒文件:你好小美的音频文件
pre_path = "E:\ws\\002M30_36\天气预报.wav"  # 前置指令,进入全双工用
re_expect = "广州今天天气怎么样"

cmd_path = "E:/ws/002M30_36/"

r = read_xls_news.Read_xls(result_path)
booknames = r.get_sheet_names()
data = []
for i in range(len(booknames)):
    tdata = r.read_data(booknames[i], start_line=2)
    data += tdata
    i += 1
# print(data)

cmd = "adb shell logread -f"
p = subprocess.Popen(cmd,
                     shell=True,
                     stdin=subprocess.PIPE,
                     stdout=subprocess.PIPE,
                     stderr=subprocess.PIPE)
pattern = "\n(.*)	device"
wakeup_pattern = "ev(.*)wake up"