• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    “會報數的計算器”的基本實現

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 13次 | 進入軟件測試論壇討論

    領測軟件測試網 兩組不難的程序;

    三個常見的軟件;

    這就請你編出"會報數的計算器"!


      一段"古老"的構思:


      記得還是在97年春天的時候,老師讓我在電腦上統計全班考試的總成績。我一個人在桌前一邊用Windows附件里的計算器,一邊手里那著厚厚的考卷往電腦里輸入成績。眼睛一會看考卷,一會移向屏幕,一會兒又得盯著鍵盤上右邊的數字鍵。這樣不僅眼睛和脖子累得很,而且很容易把數字錄入錯了。忽然想起宿舍小賣部里的那臺會發音的計算器,它在按數字鍵時它會主動報出數字來。


       那時我剛剛成為Visual Basic的狂熱愛好者,馬上就想到用VB必然可以編出這種會語音報數的計算器來,并且讓這個程序僅用一張3寸軟盤就可以裝下。


      兩組不難的程序:


      用VB實現一個計算器的功能,我想這就不用我多說了吧?VB自帶的范例里就已經有計算器的程序了(在VB目錄下的samples/calc中)。這是VB教學里最基本的程序,但是這個自帶的計算器程序只能用鼠標點擊計算器上的數字鍵時才能輸入數字,所以我們還要加上響應數字鍵盤的程序。這一點VB的初學者都可以輕易解決。


      另一個技術上的關鍵就是讓計算機發音,這個問題在VB里同樣可以解決。我們事先錄下一段起名為sound.wav的聲音文件。然后再用VB的多媒體控制接口MMControl控件命令來控制播放這段聲音文件就可以了。你要是在VB的工具箱ToolBox中找不到MCI控件,可以在菜單里的"Tools"中"CustomControls"選"Microsoft Multimedia Control"對象就可以在工具箱中增加MMControl對象。


      看,"發音計算器"程序主要構成就是這兩組不難的模塊部分。 但是構思的最精彩細節還在后面。


      三個常見的軟件:


      首先我們要錄一段聲音文件。如圖1,對著WINDOWS附件中的錄音機快速而又有停頓地念出1234567890,把他們起名存成sound.wav文件。這個過程不用我細細描述了吧?但要注意錄音的音頻屬性要調整為收音質量品質,用不著象CD一樣的音質,這樣文件就可以少占用空間了?催@段wav文件只有80K大小、3.7秒長,但這還只是開始,我們后面還有絕招。


      第二個要用到的軟件就是COOL,這是一個音頻處理軟件。它需要注冊才能同時使用全部功能,但是我們這里僅用到COOL1.33版的一部分編輯和存盤的功能就足夠了。因為此文是篇"古老"的東西,所以1.33版已是很老的玩意了,現在應該早就有了很多的更新版本。實際剛才錄下的聲音文件在每個數字聲波間隔中還有很大一段沒有有用信息的空間。如圖2,用Zoom in放大聲波文件我們就可以看到數字發音1和2中有0.2秒的無用信息,數字發音1前也有一段無用信息。用鼠標選中它們后刪除,刪除的同時你就可以看到COOL軟件下方隨時都在報這段文件改動后的大小和時間長短。經過簡單的刪除,緊縮的聲音文件一下就變成了42K、2秒大小了。其實要是仔細修飾和調整聲波文件,再用COOL重新選擇編碼方式還就可以把文件作得更小。這就使一張3寸軟盤就可以裝下整個發音計算器軟件的可能變可行。另外還要注意COOL右下角的Time參數,用它和放大波形圖的配合可以精確地標算出每一個數字發音文件的起始位和結束位,一會我們在VB中就要用到它所標出的參數定位。


      第三個軟件當然是我們的VB大寶寶。先來個小實驗:如圖3,用上面描述過的方法在窗體加上一個MCI多媒體播放器的控件,再加上一個按鈕,上面標上數字2。加入一下程序代碼:


    Private Sub


    Form_Load()

    MMControl1.TimeFormat = 0

    MMControl1.DeviceType = "waveaudio"

    MMControl1.filename = "c:\sound.wav"

    MMControl1.Command = "open"


    End Sub


      這些代碼告訴了電腦設定計時方式為把1秒分成1000個單位;啟動MCI控件播放聲波.wav的文件;通知電腦要播放的文件所處位置;打開MCI控件作好播放準備。


      再在"2"按鈕中加入代碼:


    Private Sub


    Command1_Click()

    MMControl1.From = 180:

    MMControl1.To = 400

    MMControl1.Command = "play"

    End Sub

      一運行按按鈕就會清晰地發出"2"這一發音,F在我們可以說對整個"發音計算器"程序的實現有了一個清楚的認識了吧?通過VB的From和To的控制,我們可以挑選.wav文件的任意一段來播放。我們可以通過COOL軟件精確地知道在sound.wav文件中從0.18秒到0.4秒是"2"這一數字的發音。COOL之類的音頻處理軟件和VB的MCI多媒體控件對聲波文件的播放功能之完美組合就可以化不可能為可能。我們在計算器按那個數字鍵時同時就讓MCI控件播放那個數字的發音片段,比如和Select Case Index語句作簡單配合就可以輕而易舉地實現按數字發音的效果,篇幅有限這里就不再具體描述了。整個程序的主體用不著半天就可以完成了,而且相當實用。使用計算器時眼睛只用看著紙面,手指就可以在數字小鍵盤上瀟灑輕快地點動著。請你快快實現它吧,作為你開發的又一個自由軟件成名于天下。


      不過要想讓它可靠實用地工作還有一些工作要做。比如聲音里還要加入"+-*/= . 清0"等符號的聲音,還要有除0時的警告,如果我們用API形式來播放聲音文件還要具體考慮聲音的同步異步播放、函數在聲音播放后的返不返回問題,還應該加入對計算結果的逐字讀出的等功能,要開發也得加上科學計算器的形式……好苦呀!所以我把這些工作都留給了你。


      ^_^ 后記:也許當時就早有人用到了這個小構思,但我在自己想出這個主意的時候還是很有成就感的,不用為每一個數字鍵都作一段錄音了,節省了大量的空間和簡化了程序的運行過程。最近發現北京114電話查詢臺播報號碼時很可能也是利用了播放數字聲音片段的方式,有些發音電子記事本可能也是"抄襲"了我的技術。由此延伸,其實會報時的鬧鐘、計時器、車船飛機的售票處、旅館車站查詢服務臺等等很多地方都可以用這樣的方法來完成種種發音功能。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>