基于MATLAB的语音与音频处理实践指南

需积分: 9 20 下载量 160 浏览量 更新于2024-07-18 收藏 2.66MB PDF 举报
"Applied_Speech_and_Audio_Processing_With_MATLAB_Examples" 是一本由Ian McLoughlin编著,由Cambridge出版社于2009年出版的专业书籍,专注于使用MATLAB进行语音和音频处理。这本书是初学者入门语音处理的理想资源,提供了MATLAB代码和实例,所有内容均为英文。 本书的核心在于结合语音和听力研究,系统地阐述了语音和音频处理的关键技术。作者通过实践导向的方式,将MATLAB示例贯穿全书,以便读者能够更好地理解讨论的概念,并亲自体验重要的处理技术。 书中首先介绍了基础音频处理,以及语音和听觉特征,这些基础知识为后续章节的语音信号处理奠定了基础。后续章节深入探讨了音频处理、编码、压缩和分析技术。这些技术的讲解使读者能够掌握如何处理和分析声音信号。 在书的最后部分,作者探讨了一些利用这些技术的高级主题,例如心理声学建模。这是一个核心概念,对于理解MP3和其他相关音频格式的工作原理至关重要。这样的深度研究对于研究生和在语音或音频系统领域工作的专业人士来说极具价值。 Ian McLoughlin教授是新加坡南洋理工大学计算机工程学院的副教授,他的专业知识和实践经验使得这本书成为学习语音和音频处理领域的权威参考资料。通过本书,读者不仅能够理论联系实际,还能通过MATLAB实践加深对复杂音频处理算法的理解,从而提升技能和应用能力。

将下面这条sql语句简化一下:SELECT * FROM ( SELECT fpd.fpd_id AS fpdId, fpd.fpd_budget_project AS fpdBudgetProject, fpd.fpd_budget_project_id AS fpdBudgetProjectId, fpd.fpd_pf_name AS fpdPfName, fpd.fpd_pf_id AS fpdPfId, fpd.fpd_expend_subject AS fpdExpendSubject, fpd.fpd_expend_subject_id AS fpdExpendSubjectId, fpd.fpd_payee_name AS fpdPayeeName, fpd.fpd_payee_account AS fpdPayeeAccount, fpd.fpd_payee_opening_bank AS fpdPayeeOpeningBank, fpd.fpd_payee_opening_bank_num AS fpdPayeeOpeningBankNum, fpd.fpd_dept_pay_economics_classify_num AS fpdDeptPayEconomicsClassifyNum, fpd.fpd_dept_pay_economics_classify_name AS fpdDeptPayEconomicsClassifyName, fpd.fpd_applied_amount AS fpdAppliedAmount, fpd.fpd_capital_use AS fpdCapitalUse, fpd.fpd_postscript AS fpdPostscript, fpd.fpd_budget_item_name AS fpdBudgetItemName, fpd.fpd_budget_item_number AS fpdBudgetItemNumber, fpd.fpd_dr_name AS fpdDrName, dbec.dbec_parent_num AS dbecParentNum FROM financial_payment_details fpd LEFT JOIN dept_budget_economy_class dbec ON fpd.fpd_dept_pay_economics_classify_num = dbec.dbec_num WHERE fpd.fpd_is_tax = "0" UNION ALL SELECT fpd.fpd_id AS fpdId, fpd.fpd_budget_project AS fpdBudgetProject, fpd.fpd_budget_project_id AS fpdBudgetProjectId, fpd.fpd_pf_name AS fpdPfName, fpd.fpd_pf_id AS fpdPfId, fpd.fpd_expend_subject AS fpdExpendSubject, fpd.fpd_expend_subject_id AS fpdExpendSubjectId, fpd.fpd_payee_name AS fpdPayeeName, fpd.fpd_payee_account AS fpdPayeeAccount, fpd.fpd_payee_opening_bank AS fpdPayeeOpeningBank, fpd.fpd_payee_opening_bank_num AS fpdPayeeOpeningBankNum, fpd.fpd_dept_pay_economics_classify_num AS fpdDeptPayEconomicsClassifyNum, fpd.fpd_dept_pay_economics_classify_name AS fpdDeptPayEconomicsClassifyName, sum( fpd.fpd_applied_amount ) AS fpdAppliedAmount, fpd.fpd_capital_use AS fpdCapitalUse, fpd.fpd_postscript AS fpdPostscript, fpd.fpd_budget_item_name AS fpdBudgetItemName, fpd.fpd_budget_item_number AS fpdBudgetItemNumber, fpd.fpd_dr_name AS fpdDrName, dbec.dbec_parent_num AS dbecParentNum FROM financial_payment_details fpd LEFT JOIN dept_budget_economy_class dbec ON fpd.fpd_dept_pay_economics_classify_num = dbec.dbec_num WHERE fpd.fpd_is_tax = "1" GROUP BY fpd_pay_num ) t1

2023-04-20 上传

将下面这条sql语句简短一些:SELECT * FROM ( SELECT fpd.fpd_id AS fpdId, fpd.fpd_budget_project AS fpdBudgetProject, fpd.fpd_budget_project_id AS fpdBudgetProjectId, fpd.fpd_pf_name AS fpdPfName, fpd.fpd_pf_id AS fpdPfId, fpd.fpd_expend_subject AS fpdExpendSubject, fpd.fpd_expend_subject_id AS fpdExpendSubjectId, fpd.fpd_payee_name AS fpdPayeeName, fpd.fpd_payee_account AS fpdPayeeAccount, fpd.fpd_payee_opening_bank AS fpdPayeeOpeningBank, fpd.fpd_payee_opening_bank_num AS fpdPayeeOpeningBankNum, fpd.fpd_dept_pay_economics_classify_num AS fpdDeptPayEconomicsClassifyNum, fpd.fpd_dept_pay_economics_classify_name AS fpdDeptPayEconomicsClassifyName, fpd.fpd_applied_amount AS fpdAppliedAmount, fpd.fpd_capital_use AS fpdCapitalUse, fpd.fpd_postscript AS fpdPostscript, fpd.fpd_budget_item_name AS fpdBudgetItemName, fpd.fpd_budget_item_number AS fpdBudgetItemNumber, fpd.fpd_dr_name AS fpdDrName, dbec.dbec_parent_num AS dbecParentNum FROM financial_payment_details fpd LEFT JOIN dept_budget_economy_class dbec ON fpd.fpd_dept_pay_economics_classify_num = dbec.dbec_num WHERE fpd.fpd_is_tax = "0" UNION ALL SELECT fpd.fpd_id AS fpdId, fpd.fpd_budget_project AS fpdBudgetProject, fpd.fpd_budget_project_id AS fpdBudgetProjectId, fpd.fpd_pf_name AS fpdPfName, fpd.fpd_pf_id AS fpdPfId, fpd.fpd_expend_subject AS fpdExpendSubject, fpd.fpd_expend_subject_id AS fpdExpendSubjectId, fpd.fpd_payee_name AS fpdPayeeName, fpd.fpd_payee_account AS fpdPayeeAccount, fpd.fpd_payee_opening_bank AS fpdPayeeOpeningBank, fpd.fpd_payee_opening_bank_num AS fpdPayeeOpeningBankNum, fpd.fpd_dept_pay_economics_classify_num AS fpdDeptPayEconomicsClassifyNum, fpd.fpd_dept_pay_economics_classify_name AS fpdDeptPayEconomicsClassifyName, sum( fpd.fpd_applied_amount ) AS fpdAppliedAmount, fpd.fpd_capital_use AS fpdCapitalUse, fpd.fpd_postscript AS fpdPostscript, fpd.fpd_budget_item_name AS fpdBudgetItemName, fpd.fpd_budget_item_number AS fpdBudgetItemNumber, fpd.fpd_dr_name AS fpdDrName, dbec.dbec_parent_num AS dbecParentNum FROM financial_payment_details fpd LEFT JOIN dept_budget_economy_class dbec ON fpd.fpd_dept_pay_economics_classify_num = dbec.dbec_num WHERE fpd.fpd_is_tax = "1" GROUP BY fpd_pay_num ) t1

2023-04-20 上传

校正以下代码的语法错误 def encode_edge(self, mode, node_history, node_history_st, edge_type, neighbors, neighbors_edge_value, first_history_indices, batch_size): max_hl = self.hyperparams['maximum_history_length'] max_neighbors = 0 for neighbor_states in neighbors: max_neighbors = max(max_neighbors, len(neighbor_states)) edge_states_list = list() # list of [#of neighbors, max_ht, state_dim] for i, neighbor_states in enumerate(neighbors): # Get neighbors for timestep in batch if len(neighbor_states) == 0: # There are no neighbors for edge type # TODO necessary? neighbor_state_length = int( np.sum([len(entity_dims) for entity_dims in self.state[edge_type[1]].values()]) ) edge_states_list.append(torch.zeros((1, max_hl + 1, neighbor_state_length), device=self.device)) else: edge_states_list.append(torch.stack(neighbor_states, dim=0).to(self.device)) # if self.hyperparams['edge_state_combine_method'] == 'sum': # Used in Structural-RNN to combine edges as well. op_applied_edge_states_list = list() for neighbors_state in edge_states_list: op_applied_edge_states_list.append(torch.sum(neighbors_state, dim=0))#torch.sum combined_neighbors = torch.stack(op_applied_edge_states_list, dim=0) # 获取combined_neighbors的第一个维度,代表邻接边的总数 combined_neighbors_0 = combined_neighbors.shape[0] # 创建全零矩阵s_next,形状为[batch_size, max_neighbors, combined_neighbors_0] s_next = torch.zeros((batch_size, max_neighbors, combined_neighbors_0), device=self.device) # 为s_next矩阵中每一行赋值为对应的combined_neighbors # for b in range(batch_size): # s_next[b, :len(neighbors[b]), :] = combined_neighbors[first_history_indices[b]] for i in range(batch_size): s_next[0, i, :] = batch_size[:] for i in range(max_neighbors): s_next[1, i, :] = max_neighbors[i, :] for i in range(combined_neighbors.shape[0]): s_next[2, i, :] = combined_neighbors

2023-02-15 上传