📄 synths.f
字号:
******************************************************************** SYNTHS Version 54********************************************************************* NOTE: There is excessive buffering here, BSYNZ and DEEMP should be* changed to operate on variable positions within SOUT. Also,* the output length parameter is bogus, and PITSYN should be* rewritten to allow a constant frame length output* SUBROUTINE SYNTHS(VOICE, PITCH, RMS, RC, SPEECH, K) INCLUDE 'config.fh' INCLUDE 'contrl.fh' INTEGER VOICE(2), PITCH REAL RMS, RC(ORDER), SPEECH(2*MAXFRM) INTEGER I, J, K, NOUT, IPITI(11), IVUV(11) REAL RATIO, G2PASS REAL RCI(MAXORD,11), RMSI(11), PC(MAXORD), SOUT(MAXFRM) REAL GPRIME DATA GPRIME/.7/ IF(LISTL.GE.3) THEN WRITE(FDEBUG,400) NFRAME, VOICE, PITCH, RMS, RC400 FORMAT(1X/' SYNTHESIS DATA -- FRAME',I6, 1 T32,2I3,I6,1X,F5.0,10F8.3/) IF(LISTL.GE.4) WRITE(FDEBUG,410)410 FORMAT(' EPOCH G2PASS RATIO PSCALE') END IF pitch = max(min(pitch,156),20) do i = 1, order rc(i) = max(min(rc(i),.99),-.99) end do K = 0 CALL PITSYN(ORDER, VOICE, PITCH, RMS, RC, LFRAME, 1 IVUV, IPITI, RMSI, RCI, NOUT, RATIO) IF(NOUT.GT.0) THEN DO J = 1,NOUT IF(LISTL.GE.3) THEN IF(LISTL.EQ.3) THEN WRITE(FDEBUG,420) J, NOUT, IVUV(J), IPITI(J), RMSI(J), 1 (RCI(I,J),I=1,ORDER)420 FORMAT(1X,'PITSYN EPOCH ',I2,' OF ',I2,T32,I4,I8,1X, 1 F5.0,T50,10F8.3) ELSE WRITE(FDEBUG,422) J, NOUT, IVUV(J), IPITI(J), RMSI(J), 1 (RCI(I,J),I=1,ORDER)422 FORMAT(1X,I2,'/',I2,T32,I4,I8,1X, 1 F5.0,T50,10F8.3) END IF END IF CALL IRC2PC(RCI(1,J), PC, ORDER, GPRIME, G2PASS) IF(LISTL.GE.4) WRITE(FDEBUG,430) G2PASS, RATIO, 1.0, PC430 FORMAT(T7,3F7.3,T50,10F8.1) CALL BSYNZ(PC, IPITI(J), IVUV(J), SOUT, RMSI(J), 1 RATIO, G2PASS) CALL DEEMP(SOUT, IPITI(J)) DO I = 1,IPITI(J) K = K + 1 SPEECH(K) = SOUT(I) / 4096. END DO END DO END IF RETURN END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -