Board logo

標題: 音訊設定 [打印本頁]

作者: HSIEN6001    時間: 2012-4-24 14:37     標題: 音訊設定

本帖最後由 HSIEN6001 於 2012-4-24 14:46 編輯

我太菜了!光這個就搞不定
厚臉皮來求救了!
  1. Sub SpeEng()
  2. Dim i
  3.     For i = 1 To CountA(Range("C:C"))   '--->Error
  4.         Set oSa = CreateObject("SAPI.SpVoice")
  5.         oSa.Volume = 100
  6.         oSa.Rate = -1
  7.         oSa.Speak [ "C" & i ]   '--->Error
  8.         Sleep 2000  '--->Error
  9.     Next i
  10. End Sub
複製代碼
PS:小聲問....XP 內定的男音 有方法改成女音?!  (請不要告訴我:改灌Win 7)
作者: oobird    時間: 2012-4-24 15:27

1.for i = 1 to [c65536].end(3).row

2. oSa.Speak  cells(i,3)

3. 網上有許多語音庫供下載,這是一個:http://album.blog.yam.com/show.p ... 8681&i=15505199
其實下載微軟TTS語音引擎 (TTS Engines) 5.1版,已包括 Sam / Mary / Mike 三種美國英語發音
作者: oobird    時間: 2012-4-24 15:53

http://115.com/file/bhvcw92h
目前這個是公認最接近真人發音的文字轉換語音引擎
作者: HSIEN6001    時間: 2012-4-24 16:41

本帖最後由 HSIEN6001 於 2012-4-24 16:49 編輯

回復 2# oobird


    語法真是千變萬化!  好神!

    CountA(Range("C:C")    我不清楚錯在哪?!---->可以告訴我錯誤?!
    延遲 Sleep 2000 也不知道為何不行,會出現偵錯--->延遲的語法,請版大指導,謝謝!

   --->有個想法是用對話框輸入指定欄位,一次唸一句。不要〔延遲〕設定  -->拜託版大指導,謝謝。
   
   版大提供 [c65536].End(3).Row 我趕快Google

   [C65536].End(xlUp).Row
   [C65536].End(xlDown).Row
   還有點"霧煞煞",End(3)--->3應該指的是C
   UP & Down ?!
作者: HSIEN6001    時間: 2012-4-24 16:43

本帖最後由 HSIEN6001 於 2012-4-24 17:03 編輯

回復 3# oobird

  版大,拍謝!  這網址,偶不知道按哪個下載!
優化(蛋)下載?!

 剛剛選 mike 發音較正常些!~謝謝^^
作者: Hsieh    時間: 2012-4-24 22:05

本帖最後由 Hsieh 於 2012-4-24 22:15 編輯

回復 4# HSIEN6001

sleep是API函數,完整程式碼如下
  1. Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  2. Sub SpeEng()
  3. Dim i
  4.     For i = 1 To Application.CountA(Range("C:C"))   '使用工作表函數計算C欄的資料量作為迴圈結束
  5.         Set oSa = CreateObject("SAPI.SpVoice")  '創建語音物件
  6.         oSa.Volume = 100  '音量
  7.         oSa.Rate = -1  '速度
  8.         oSa.Speak Cells(i, 3) '讀出C欄的內容
  9.         Sleep 2000  '停留2秒繼續
  10.     Next i
  11. End Sub
複製代碼

作者: HSIEN6001    時間: 2012-4-24 22:19

回復 6# Hsieh


    謝謝Hsieh 版主的解析,我大略懂意思了
 我會再加把勁學習的,另一個想法我自己繼續努力看看
 
 屆時再商請指導!
 ∼感恩!
作者: HSIEN6001    時間: 2012-4-25 13:04

可以用了耶!
  1. Sub SpeEnginBox()
  2. Dim i
  3.     Application.ScreenUpdating = False
  4.     i = InputBox("請輸入欲發音列, 格式 1、2、3...", , 2)
  5.     Application.DisplayAlerts = False
  6.         Set oSa = CreateObject("SAPI.SpVoice")
  7.         oSa.Volume = 100
  8.         oSa.Rate = -1
  9.         oSa.Speak Cells(i, 3)
  10.         Sleep 2000
  11. End Sub
複製代碼
剪剪貼貼ㄉ語法
有誤用的話,請大大們指點。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)